次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part132
http://mevius.5ch.net/test/read.cgi/tech/1507561894/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1509780815/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
C++相談室 part133
レス数が900を超えています。1000を超えると表示できなくなるよ。
1デフォルトの名無しさん (ワッチョイ 1fcf-H1rY)
2017/11/24(金) 16:52:50.43ID:WoNXR2ax0812デフォルトの名無しさん (ワッチョイ ca34-SFeq)
2018/01/03(水) 23:20:34.97ID:XsO0N2Ro0 intelのCPUに重大なバグ。修正により性能30%ダウンは確実。 もちろんcoffeeも対象 [589351131]
https://leia.5ch.net/test/read.cgi/poverty/1514960738/
>インテルのCEOが関連性は不明だが2017年11月にCEOを最低維持できる25万株残して株式を売却している
ヤバいで
https://leia.5ch.net/test/read.cgi/poverty/1514960738/
>インテルのCEOが関連性は不明だが2017年11月にCEOを最低維持できる25万株残して株式を売却している
ヤバいで
813デフォルトの名無しさん (ワッチョイ 1f60-1EiW)
2018/01/04(木) 00:19:22.89ID:NEvAF4vy0814デフォルトの名無しさん (ワッチョイ 1f60-1EiW)
2018/01/04(木) 00:25:51.35ID:NEvAF4vy0815デフォルトの名無しさん (ワッチョイ 1f60-1EiW)
2018/01/04(木) 00:34:08.27ID:NEvAF4vy0 関連記事がまとまっていた
https://news.google.com/news/story/dxTQx3jGZ4VUkpMLaUSX33-gnbA8M?hl=en-GB&ned=uk&gl=GB
https://news.google.com/news/story/dxTQx3jGZ4VUkpMLaUSX33-gnbA8M?hl=en-GB&ned=uk&gl=GB
816デフォルトの名無しさん (ワッチョイ efe7-Ogju)
2018/01/04(木) 00:45:09.37ID:Z29HpgyU0 えっやばくねこれ
817デフォルトの名無しさん (ワッチョイ 0feb-gOZ5)
2018/01/04(木) 02:42:39.95ID:tRFYlI1W0 なんか>>811にめちゃめちゃ書いてあるらしく実際そんなヤバないらしいよ
818デフォルトの名無しさん (ワッチョイ 3b89-2A+B)
2018/01/04(木) 06:34:15.00ID:O1MbUTjx0 やってみろよ
ム板でそういう発言恥ずかしくないのか
ム板でそういう発言恥ずかしくないのか
819デフォルトの名無しさん (ブーイモ MM0f-tDXD)
2018/01/04(木) 08:34:28.43ID:BdTp33RzM システムコール呼び出すたびにアドレス空間を切り替えるパッチを当てるみたいだから、
io叩きまくるコンパイル作業はモロに影響うけるかもね。
arm64版にもパッチを当てるみたいだけど、禿大丈夫か…
io叩きまくるコンパイル作業はモロに影響うけるかもね。
arm64版にもパッチを当てるみたいだけど、禿大丈夫か…
820デフォルトの名無しさん (アウアウウー Sa8f-hL1C)
2018/01/04(木) 18:57:44.39ID:mQU15vmIa intel抜けてる
intel割れてる
intel割れてる
821デフォルトの名無しさん (アウアウカー Sa4f-672L)
2018/01/05(金) 22:53:49.25ID:eQNcfao2a c++で例外は使ってますか?
また使う場合std::exceptionを継承しますか?
また使う場合std::exceptionを継承しますか?
822デフォルトの名無しさん (ワッチョイ cb78-dycC)
2018/01/05(金) 23:16:55.81ID:Zjbc7FO50 最後の門番がstd::exceptionなんで継承して使う
823デフォルトの名無しさん (ワッチョイ 2bb3-hL1C)
2018/01/05(金) 23:33:54.58ID:o2QD25iD0 ] ][][[[ [][] [[["][ [ ]]]["04"
824デフォルトの名無しさん (ワッチョイ 9f33-aKZ8)
2018/01/06(土) 01:45:54.07ID:oEcDcvUy0 >>821
標準コンテナとか含めて new 使ったら bad_alloc 受けることになるんだから
ほとんどの場合に使ってると言えそうなんだけど「継承しますか?」って話に繋がってるってことは
「使う」=自分で例外クラスを定義して使うって話なのかな?
標準コンテナとか含めて new 使ったら bad_alloc 受けることになるんだから
ほとんどの場合に使ってると言えそうなんだけど「継承しますか?」って話に繋がってるってことは
「使う」=自分で例外クラスを定義して使うって話なのかな?
825デフォルトの名無しさん (ワッチョイ cb75-if4i)
2018/01/06(土) 02:11:45.78ID:dYI3l1P40 英単語の前後にスペースを挿入するのはこだわり?
826はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ef6f-hL1C)
2018/01/06(土) 02:48:37.95ID:mAB25EnJ0 >>825
TeX で英数字からなる語の前後に空白を入れないと単語境界がうまく認識されないという問題があったので、この習慣は広く定着してる。
ただ、 pTeX などでは自動で境界を認識して適切な幅を取るようになっているのでむしろ空白文字を入れるとダメってのもある。
どっちでも上手いこと処理するのもあるし、そのへんごちゃごちゃしてややこしいんだわ。
ウェブブラウザでも物によって幅の取り方が違う。
まあ個人的には、バッドノウハウだという自覚はあるが、 html やプレーンテキストでは英単語の前後には空白を入れた方が見やすいと思う。
TeX で英数字からなる語の前後に空白を入れないと単語境界がうまく認識されないという問題があったので、この習慣は広く定着してる。
ただ、 pTeX などでは自動で境界を認識して適切な幅を取るようになっているのでむしろ空白文字を入れるとダメってのもある。
どっちでも上手いこと処理するのもあるし、そのへんごちゃごちゃしてややこしいんだわ。
ウェブブラウザでも物によって幅の取り方が違う。
まあ個人的には、バッドノウハウだという自覚はあるが、 html やプレーンテキストでは英単語の前後には空白を入れた方が見やすいと思う。
827デフォルトの名無しさん (ワッチョイ cb75-if4i)
2018/01/06(土) 02:53:16.08ID:dYI3l1P40 たしかに
828デフォルトの名無しさん (ワッチョイ 9f33-aKZ8)
2018/01/06(土) 02:59:22.25ID:oEcDcvUy0829デフォルトの名無しさん (アウアウウー Sa8f-672L)
2018/01/06(土) 09:05:07.05ID:QqCP9l1Xa >>824
そうです。c++の本など見ても標準の例外を説明して終わりな事が多いし、しまいにはnoexceptなるキーワードまで出来てるし実際使ってるのかなと。
そうです。c++の本など見ても標準の例外を説明して終わりな事が多いし、しまいにはnoexceptなるキーワードまで出来てるし実際使ってるのかなと。
830デフォルトの名無しさん (ワッチョイ 0bbb-2A+B)
2018/01/07(日) 19:05:16.44ID:8XJu4dlo0 標準の例外はexception&で捕獲できる
ただそれだけのこと
独自定義の例外を標準の例外とは区別したいのなら
exceptionを継承しないという手も当然ある
教条主義にとらわれるやつ=自分の頭で考えないやつは
こういう判断が極度に苦手だ
ただそれだけのこと
独自定義の例外を標準の例外とは区別したいのなら
exceptionを継承しないという手も当然ある
教条主義にとらわれるやつ=自分の頭で考えないやつは
こういう判断が極度に苦手だ
831デフォルトの名無しさん
2018/01/07(日) 23:12:25.29832はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ef6f-hL1C)
2018/01/08(月) 02:30:58.74ID:4mwCF63o0 標準のライブラリがやってることっていうのはだいたいその言語における「普通」なので、
原則としてはそれに合わせるというのは良い方法だよ。
あえて原則に逆らいたいとき、逆らった方が便利なときというのももちろんあるけれど、
たいして強い動機もないのに独自の設計を選択するのは混乱の元。
つまり、例外クラスは std::exception を継承するのが好ましい。
その上でそのデザインが問題を起こす場合があるなら見直せばいい。
原則としてはそれに合わせるというのは良い方法だよ。
あえて原則に逆らいたいとき、逆らった方が便利なときというのももちろんあるけれど、
たいして強い動機もないのに独自の設計を選択するのは混乱の元。
つまり、例外クラスは std::exception を継承するのが好ましい。
その上でそのデザインが問題を起こす場合があるなら見直せばいい。
833デフォルトの名無しさん (ワッチョイ 0b44-5YeV)
2018/01/08(月) 03:33:16.23ID:yXJvU4Pj0 動的例外がまだ廃止されていない頃に設計されたものが
今のC++に対して本当に「普通」なのか考えたことがあるか?
(別にここで答えなくてよいが)
誤った前提のうえに立つ主張はただの戯れ言で
そうなっていないことは確認してからぬかせ
今のC++に対して本当に「普通」なのか考えたことがあるか?
(別にここで答えなくてよいが)
誤った前提のうえに立つ主張はただの戯れ言で
そうなっていないことは確認してからぬかせ
834デフォルトの名無しさん (ワッチョイ 0fe8-u9Oh)
2018/01/08(月) 04:19:16.37ID:svytTaJl0 std::exceptionを継承しないメリットって何かある?
835デフォルトの名無しさん (ワッチョイ 0b44-5YeV)
2018/01/08(月) 05:20:35.84ID:yXJvU4Pj0 僅か数レスの流れくらい読め
836デフォルトの名無しさん (ワッチョイ 1fbd-wtpF)
2018/01/08(月) 06:27:14.93ID:scSfOfeH0 std::exceptionを継承しないデメリットもようわからん…
std::exceptionは一体何をやっているのや?
std::exceptionを継承しなくとも
throw 1; --> catch (int)で捕捉
throw "Hello World!"; --> catch (const char*)で捕捉
とかやれるようになったのって比較的最近?
std::exceptionは一体何をやっているのや?
std::exceptionを継承しなくとも
throw 1; --> catch (int)で捕捉
throw "Hello World!"; --> catch (const char*)で捕捉
とかやれるようになったのって比較的最近?
837デフォルトの名無しさん (ワッチョイ 0f81-k2O/)
2018/01/08(月) 06:38:24.96ID:iffK3nmC0838デフォルトの名無しさん (ワッチョイ efe7-Ogju)
2018/01/08(月) 09:47:56.66ID:mQiTu3iz0 クラス以外を投げるのはdeprecatedになってたような…(自信なし)
とはいえstd::exceptionを継承しなければならない強い理由もあんまりないような気がする
JavaのThrowableやらPythonのExceptionやらはGCの都合だし
あくまでstd内の例外を組織化するための基本クラスでしょstd::exceptionって
とはいえstd::exceptionを継承しなければならない強い理由もあんまりないような気がする
JavaのThrowableやらPythonのExceptionやらはGCの都合だし
あくまでstd内の例外を組織化するための基本クラスでしょstd::exceptionって
839デフォルトの名無しさん (ワントンキン MMbf-k2O/)
2018/01/08(月) 09:53:10.93ID:kEMPsv5+M840デフォルトの名無しさん (ワッチョイ 1fbd-wtpF)
2018/01/08(月) 10:38:49.41ID:scSfOfeH0 std::exceptionおよびその派生クラスを受け取る標準のロギングフレームワークってありましたっけ…
STLはなんか例外を投げる側しかサポートしていない印象
そもそも例外の捕捉のしくみは「知ってる例外のみ捕捉して処理する/知らない例外はさらに呼び出し元に送る」戦略なので、
受け取る側に既存のフレームワークが無いんなら、投げる側の例外が高度に統一されている必要は実はそんなには無いキモス
せいぜいコピーしたときリークするようなクラスではあってほしくないという願いがあるぐらいで実は何だって良いのでは…
STLはなんか例外を投げる側しかサポートしていない印象
そもそも例外の捕捉のしくみは「知ってる例外のみ捕捉して処理する/知らない例外はさらに呼び出し元に送る」戦略なので、
受け取る側に既存のフレームワークが無いんなら、投げる側の例外が高度に統一されている必要は実はそんなには無いキモス
せいぜいコピーしたときリークするようなクラスではあってほしくないという願いがあるぐらいで実は何だって良いのでは…
841デフォルトの名無しさん (ワッチョイ 9f33-aKZ8)
2018/01/08(月) 11:10:23.18ID:MwpEdGth0 >>840
「フレームワーク」にあたるかどうかはわかんないけど、
catch(std::exception& e) で e.what() を拾うっていうよくあるエラー処理のパターンがあるんだよ。
https://github.com/search?utf8=%E2%9C%93&q=%22catch+std%3A%3Aexception%22+what&type=Code
だから、 std::exception 派生にしといてもらわないとまともなエラーメッセージが出なかったりして困る。
「フレームワーク」にあたるかどうかはわかんないけど、
catch(std::exception& e) で e.what() を拾うっていうよくあるエラー処理のパターンがあるんだよ。
https://github.com/search?utf8=%E2%9C%93&q=%22catch+std%3A%3Aexception%22+what&type=Code
だから、 std::exception 派生にしといてもらわないとまともなエラーメッセージが出なかったりして困る。
842デフォルトの名無しさん (ワッチョイ 1f5b-5YeV)
2018/01/08(月) 14:35:51.13ID:u4QX+fVn0 アホか
e.what() を誰に対して表示するんだよ
一般消費者にbad_allocとか言っても通じねえ
せいぜい「何たらファイルを保守員に渡せ」くらいだろ
e.what() を誰に対して表示するんだよ
一般消費者にbad_allocとか言っても通じねえ
せいぜい「何たらファイルを保守員に渡せ」くらいだろ
843デフォルトの名無しさん (ワッチョイ 9f34-5fu2)
2018/01/08(月) 14:44:37.01ID:zFrH1/Fm0 e.what()なんてどうでもいい
どのソースファイルの何行目でそいつがthrowされてきたかだ
どのソースファイルの何行目でそいつがthrowされてきたかだ
844デフォルトの名無しさん
2018/01/08(月) 14:46:08.42 >>842
実際広く使われてるものを一人で一生懸命否定してもな・・・
実際広く使われてるものを一人で一生懸命否定してもな・・・
845デフォルトの名無しさん (ワッチョイ 9f34-5fu2)
2018/01/08(月) 14:48:45.77ID:zFrH1/Fm0 そこら辺が例外としてカスタマーに出す情報として欠けている
巷で言うところのアスペクト機構というやつか
巷で言うところのアスペクト機構というやつか
846デフォルトの名無しさん (ワッチョイ 9f98-TAu9)
2018/01/08(月) 15:10:05.58ID:IpW3L+tu0 十進数計算をするためには一般的にはBCDをDPDを使用しますが
二進数のままで十進数の丸め処理をすることはできますか?
二進数のままで十進数の丸め処理をすることはできますか?
847デフォルトの名無しさん (ワッチョイ 1f5b-5YeV)
2018/01/08(月) 15:46:10.84ID:u4QX+fVn0 >>844
自分の頭で考えることを放棄しているやつとでは議論にならない
自分の頭で考えることを放棄しているやつとでは議論にならない
848デフォルトの名無しさん
2018/01/08(月) 16:18:21.05 >>847
そんなに独自路線を走りたいなら家で大人しく引きこもってろ
そんなに独自路線を走りたいなら家で大人しく引きこもってろ
849デフォルトの名無しさん (ワッチョイ efe7-Ogju)
2018/01/08(月) 16:30:52.97ID:mQiTu3iz0 >>841眺めてるけど
全ての例外オブジェクトはstd::exception派生でなければならないなんてポリシーで書かれてるコードそんなにないぞ
当たり前だけどだいたいcatch(...)も後続させてるし、std::exception派生じゃない独自クラスのcatchを前に続けてるコードも普通にある
というか「catch(std::exception& e) で e.what() を拾うっていうよくあるエラー処理のパターン」って何?
それは単にstd::exceptionを拾ってるだけで、std::exceptionを拾ったらそりゃwhat()使うに決まってんだろ当たり前の話
全ての例外オブジェクトはstd::exception派生でなければならないなんてポリシーで書かれてるコードそんなにないぞ
当たり前だけどだいたいcatch(...)も後続させてるし、std::exception派生じゃない独自クラスのcatchを前に続けてるコードも普通にある
というか「catch(std::exception& e) で e.what() を拾うっていうよくあるエラー処理のパターン」って何?
それは単にstd::exceptionを拾ってるだけで、std::exceptionを拾ったらそりゃwhat()使うに決まってんだろ当たり前の話
850デフォルトの名無しさん
2018/01/08(月) 16:41:29.24 (´・∀・`)ヘェー
あ、ちなみに俺はC++経験ないけど暇つぶしに横から煽ってるだけだから気にしないでね^^
あ、ちなみに俺はC++経験ないけど暇つぶしに横から煽ってるだけだから気にしないでね^^
851デフォルトの名無しさん (ワッチョイ cb75-rVxj)
2018/01/08(月) 16:47:22.54ID:LRSoqKZx0 誰もおまえを相手にしてない定期
852デフォルトの名無しさん (ワッチョイ 1f5b-5YeV)
2018/01/08(月) 17:58:52.06ID:u4QX+fVn0 > std::exception 派生にしといてもらわないとまともなエラーメッセージが出なかったりして困る。
まともなエラーメッセージって
cout << runtime_error{"aho"}.what(); //aho
これのことか?www
おまえさんもしかしてsystem_errorが理解できなくて使ってないとかか?
まともなエラーメッセージって
cout << runtime_error{"aho"}.what(); //aho
これのことか?www
おまえさんもしかしてsystem_errorが理解できなくて使ってないとかか?
853デフォルトの名無しさん (ワッチョイ cb75-rVxj)
2018/01/08(月) 20:02:51.13ID:LRSoqKZx0 shamu_game?
854デフォルトの名無しさん (ワッチョイ fb23-pzyA)
2018/01/08(月) 22:00:33.29ID:oHMwX23z0 >>846
固定小数点でやればいい
固定小数点でやればいい
855デフォルトの名無しさん (ワッチョイ 9f33-aKZ8)
2018/01/09(火) 02:11:08.05ID:VwLwz+6J0 >>849
後続の catch(...) で拾っても何が起こったのがわかんなくて困ることがあるって話。
後続の catch(...) で拾っても何が起こったのがわかんなくて困ることがあるって話。
856はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ef6f-hL1C)
2018/01/09(火) 02:22:46.70ID:ODJfN40E0 >>847
カスが考えるより、 C++ の (ライブラリ) 設計を真似た方がマシやで
カスが考えるより、 C++ の (ライブラリ) 設計を真似た方がマシやで
857デフォルトの名無しさん (ワッチョイ 0bf6-5YeV)
2018/01/09(火) 10:16:09.54ID:BapSTNU/0 おまえが考えるより真似た方がマシなのは言われんでもわかってる
858デフォルトの名無しさん (ワッチョイ fb23-pzyA)
2018/01/09(火) 10:43:54.73ID:2HziowuR0 バカの考え休むに似たりなる諺の発祥を追うような展開
860デフォルトの名無しさん (ワッチョイ 1e8a-zuLH)
2018/01/11(木) 06:31:56.64ID:hO0Nh6Zo0 ファイルコピーをしたいんだけど改善点あるかな?
引数にはコピー元とコピー先のファイルパスを受けとる予定
もっと簡単な記法があると助かる...
int copy(const char* old, const char* new)
{
FILE *fi, *fo;
int ch;
if(NULL==old||NULL==new){
return -1;
}
if ((fi = fopen(old, "r")) == NULL) {
return -1;
}
if ((fo = fopen(argv[2], "w")) == NULL) {
fclose(fi);
return -1;
}
while((ch = fgetc(fi)) != EOF){
fputc(ch, fo);
}
fclose(fi);
fclose(fo);
return 0;
}
引数にはコピー元とコピー先のファイルパスを受けとる予定
もっと簡単な記法があると助かる...
int copy(const char* old, const char* new)
{
FILE *fi, *fo;
int ch;
if(NULL==old||NULL==new){
return -1;
}
if ((fi = fopen(old, "r")) == NULL) {
return -1;
}
if ((fo = fopen(argv[2], "w")) == NULL) {
fclose(fi);
return -1;
}
while((ch = fgetc(fi)) != EOF){
fputc(ch, fo);
}
fclose(fi);
fclose(fo);
return 0;
}
861デフォルトの名無しさん (ワッチョイ 5922-UJUP)
2018/01/11(木) 06:46:10.27ID:S67tZ9jk0 関数仮引数を動的検査している
終了ステートが負論理
system_errorを使っていない
C++なのにfopen
終了ステートが負論理
system_errorを使っていない
C++なのにfopen
862デフォルトの名無しさん (ワッチョイ ea34-yppE)
2018/01/11(木) 06:55:18.88ID:bQ6Hme0D0 fpucとfgetcの繰り返しは短いファイルなら良いけど長いファイルだとCPU時間やたら食うだけのクソになるな
863デフォルトの名無しさん (ドコグロ MM12-J7fK)
2018/01/11(木) 07:06:36.75ID:W1ryMExAM >>860
改善点以前にコンパイルできるコードを持ってこいよ...
> if ((fo = fopen(argv[2], "w")) == NULL) {
あと文字単位のコピーは非効率だからせめて fread/fwrite にすべき
また使える環境ならstd::filesystem::copyとかを使った方がいい
http://en.cppreference.com/w/cpp/filesystem/copy
改善点以前にコンパイルできるコードを持ってこいよ...
> if ((fo = fopen(argv[2], "w")) == NULL) {
あと文字単位のコピーは非効率だからせめて fread/fwrite にすべき
また使える環境ならstd::filesystem::copyとかを使った方がいい
http://en.cppreference.com/w/cpp/filesystem/copy
864デフォルトの名無しさん (スプッッ Sd0a-zuLH)
2018/01/11(木) 07:23:14.65ID:1qlx+5WGd865デフォルトの名無しさん (スプッッ Sd0a-zuLH)
2018/01/11(木) 07:33:45.62ID:1qlx+5WGd freadを考えてみたけどファイルサイズ不明な場合一度に読み込むバッファサイズとかどうなるん?
866デフォルトの名無しさん (ワッチョイ 6a12-0PCX)
2018/01/11(木) 08:03:11.10ID:Nwq/3BKy0 各マシンでの最適なバッファサイズを逐一計算して求めるのがC++
867デフォルトの名無しさん (ドコグロ MM12-J7fK)
2018/01/11(木) 08:10:51.08ID:W1ryMExAM >>865
環境わからんからなんとも言えんが10KB程度とっときゃいいんじゃね?
環境わからんからなんとも言えんが10KB程度とっときゃいいんじゃね?
868デフォルトの名無しさん (ワッチョイ a59e-/QpA)
2018/01/11(木) 09:08:45.65ID:lNcIwFA20869デフォルトの名無しさん (ワッチョイ 4923-v0zr)
2018/01/11(木) 09:58:35.85ID:3a3jMnur0 >>860
fopen の引数は “rb” “wb” にしておくのが一般的
もし実用品として使うならなるべく大きな単位、
最低でも1Mバイト程度はまとめて読み書きすると良いよ。100Mでもいい。
細かい単位で読んで書いてを行うとHDDで大きなファイルを処理する場合とてつもなく遅くなる。
あとそういう書き方をしたいならそれは c++ ではなく
c のスレ(あるのか知らんが)で聞く内容だと思う
fopen の引数は “rb” “wb” にしておくのが一般的
もし実用品として使うならなるべく大きな単位、
最低でも1Mバイト程度はまとめて読み書きすると良いよ。100Mでもいい。
細かい単位で読んで書いてを行うとHDDで大きなファイルを処理する場合とてつもなく遅くなる。
あとそういう書き方をしたいならそれは c++ ではなく
c のスレ(あるのか知らんが)で聞く内容だと思う
870デフォルトの名無しさん (ワッチョイ 5922-UJUP)
2018/01/11(木) 10:03:28.58ID:S67tZ9jk0 >>868
不勉強を恥じろボケ
#include <filesystem>
#include <iostream>
auto copy(char const* src, char const* dst)
{
try
{
return std::filesystem::copy_file(src, dst);
}
catch(std::exception& err)
{
std::cerr << err.what();
}
return false;
}
不勉強を恥じろボケ
#include <filesystem>
#include <iostream>
auto copy(char const* src, char const* dst)
{
try
{
return std::filesystem::copy_file(src, dst);
}
catch(std::exception& err)
{
std::cerr << err.what();
}
return false;
}
871はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5e6f-QpsD)
2018/01/11(木) 10:19:39.83ID:jbhd+X3/0 filesystem がまだ使えない環境もあるかもしれんので小ネタを披露しておくと、
rdbuf を使う方法があるんや。
ifstream in(src);
ostream out(dst);
out << in.rdbuf();
みたいな要領な。 エラー処理は適宜うまいことやってくれ。
rdbuf を使う方法があるんや。
ifstream in(src);
ostream out(dst);
out << in.rdbuf();
みたいな要領な。 エラー処理は適宜うまいことやってくれ。
872デフォルトの名無しさん (ワッチョイ 4923-v0zr)
2018/01/11(木) 11:19:16.78ID:3a3jMnur0 パフォーマンス厨だが
もし実用するなら setvbuf の rdbuf 版みたいなのがあるからそれも呼ぶべきと一言
もし実用するなら setvbuf の rdbuf 版みたいなのがあるからそれも呼ぶべきと一言
873デフォルトの名無しさん
2018/01/11(木) 12:15:07.96 system("cp -f a.txt b.txt") でいいよね(´・ω・`)
874デフォルトの名無しさん (スップ Sd0a-iyAC)
2018/01/11(木) 13:09:33.65ID:EPrc03FTd パフォーマンス厨なら
リードとライトは別スレッドにするとか
読み書きサイズをクラスタサイズの倍数にするとか
リードとライトは別スレッドにするとか
読み書きサイズをクラスタサイズの倍数にするとか
875デフォルトの名無しさん (ワッチョイ 7db3-JQPx)
2018/01/11(木) 13:20:11.53ID:eUOyd8Rr0 物理的に別のデバイスならリード/ライトは別スレッドで回したほうが速いだろうが、同じデバイスだとシングルスレッドでも大差ないだろうな
あとはバッファサイズをできるだけ大きく取って、IOの発行数を抑えるのが王道かな
あとはバッファサイズをできるだけ大きく取って、IOの発行数を抑えるのが王道かな
876デフォルトの名無しさん (ワッチョイ 118a-QzTo)
2018/01/11(木) 14:07:04.69ID:VjH1J6HL0877デフォルトの名無しさん (アウアウカー Sa55-EKU2)
2018/01/11(木) 14:43:56.63ID:EDmjquO+a プログラミングなんてどっかからコード引っ張って書けば一切手を汚すことなくできるのに何偉そうに言ってんだか...
英語読めないからって海外の文献を参考にせず自分で作ろうとする日本人の無駄な努力には呆れるよ
アメリカ「アホだから」
韓国「レベル低いな」
インド「アジアの恥さらし」って思われてそう
英語読めないからって海外の文献を参考にせず自分で作ろうとする日本人の無駄な努力には呆れるよ
アメリカ「アホだから」
韓国「レベル低いな」
インド「アジアの恥さらし」って思われてそう
878デフォルトの名無しさん (アウアウカー Sa55-EKU2)
2018/01/11(木) 14:48:19.11ID:xUZeJB/aa 必死こいてコード書いてるやつ見ると情けない
世界65億人130カ国!
お前の書いてるコードがまさか地球上にないものだと思ってんの?
プログラマーの端くれが、そりゃトップで活躍するプログラマーなら常に新しいものを求めてるから生き残るけど...
それ未満は10年後にはAI、またはコード共有化が進んで消えた職業になっているだろうね
悲しいけど現実見てくれ
世界65億人130カ国!
お前の書いてるコードがまさか地球上にないものだと思ってんの?
プログラマーの端くれが、そりゃトップで活躍するプログラマーなら常に新しいものを求めてるから生き残るけど...
それ未満は10年後にはAI、またはコード共有化が進んで消えた職業になっているだろうね
悲しいけど現実見てくれ
879デフォルトの名無しさん (ワッチョイ 5922-UJUP)
2018/01/11(木) 15:17:43.47ID:S67tZ9jk0 構ってちゃんが必死で連投してるな
著作権だの互換性だのと縁のない幸せ者だな
著作権だの互換性だのと縁のない幸せ者だな
880デフォルトの名無しさん (ドコグロ MM0a-5dQQ)
2018/01/11(木) 15:32:14.08ID:deNLSlJUM >>876
バカにするなら模範コードぐらい書いてやれよ。
バカにするなら模範コードぐらい書いてやれよ。
881デフォルトの名無しさん (ワッチョイ ea34-yppE)
2018/01/11(木) 16:16:00.19ID:bQ6Hme0D0 テストしてないけど
const size_t BUF_SZ=8192;
char buf[BUF_SZ];
while(!feof(fi)){
size_t n=fread(buf,sizeof char,BUF_SZ,fi);
if(n&&n!=fwrite(buf,sizeof char,n,fo)) {perror("ディスクエラー");return -1;}
}
>>873
WindowsならSHFileOperationかな?
windowsでsystem叩くのは文字数制限とか""のくくり方とか微妙に怪しくてなんか嫌なんよね
const size_t BUF_SZ=8192;
char buf[BUF_SZ];
while(!feof(fi)){
size_t n=fread(buf,sizeof char,BUF_SZ,fi);
if(n&&n!=fwrite(buf,sizeof char,n,fo)) {perror("ディスクエラー");return -1;}
}
>>873
WindowsならSHFileOperationかな?
windowsでsystem叩くのは文字数制限とか""のくくり方とか微妙に怪しくてなんか嫌なんよね
お題:http://mevius.2ch.net/test/read.cgi/tech/1480579110/981
回答
http://mevius.2ch.net/test/read.cgi/tech/1480579110/997
http://mevius.2ch.net/test/read.cgi/tech/1434079972/30
https://ideone.com/LV4UdE
while (bytesDataNum > 0) {
int n;
fin.read((char *)&buffer, std::min(N, bytesDataNum));
if (fin.fail())
return 0;
n = fin.gcount();
fout.write((char *)&buffer, n);
if (fout.fail())
return 0;
bytesDataNum -= n;
}
return 1;
}
C++fstream/read/write を使うのだったらこんなところか
>>881 の n = fread() が BUF_SZ に満たなくてもエラーが立ってしまうのが思案のしどころだね、あらかじめ読み込みバイト数を知っておかなければならない‥
回答
http://mevius.2ch.net/test/read.cgi/tech/1480579110/997
http://mevius.2ch.net/test/read.cgi/tech/1434079972/30
https://ideone.com/LV4UdE
while (bytesDataNum > 0) {
int n;
fin.read((char *)&buffer, std::min(N, bytesDataNum));
if (fin.fail())
return 0;
n = fin.gcount();
fout.write((char *)&buffer, n);
if (fout.fail())
return 0;
bytesDataNum -= n;
}
return 1;
}
C++fstream/read/write を使うのだったらこんなところか
>>881 の n = fread() が BUF_SZ に満たなくてもエラーが立ってしまうのが思案のしどころだね、あらかじめ読み込みバイト数を知っておかなければならない‥
883デフォルトの名無しさん (ワッチョイ ea34-yppE)
2018/01/11(木) 17:11:02.74ID:bQ6Hme0D0 せやね。エラーチェックは難しいのう。
const size_t BUF_SZ=8192;
char buf[BUF_SZ];
while(!feof(fi)){
size_t n=fread(buf,sizeof char,BUF_SZ,fi);
if(!n) {perror("ディスク読み込みエラー");return -1;}
if(n!=fwrite(buf,sizeof char,n,fo)) {perror("ディスク書き込みエラー");return -1;}
}
const size_t BUF_SZ=8192;
char buf[BUF_SZ];
while(!feof(fi)){
size_t n=fread(buf,sizeof char,BUF_SZ,fi);
if(!n) {perror("ディスク読み込みエラー");return -1;}
if(n!=fwrite(buf,sizeof char,n,fo)) {perror("ディスク書き込みエラー");return -1;}
}
884デフォルトの名無しさん (ワッチョイ 118a-QzTo)
2018/01/11(木) 17:32:08.08ID:VjH1J6HL0 >>880
さてそんなこと言われてもプラットフォームすら指定されていないし
例えばWindowsなら↓一発で済む話だよな
https://msdn.microsoft.com/ja-jp/library/cc429185.aspx
ファイルコピーごときに自前でコードなんか書いてられるかよ
さてそんなこと言われてもプラットフォームすら指定されていないし
例えばWindowsなら↓一発で済む話だよな
https://msdn.microsoft.com/ja-jp/library/cc429185.aspx
ファイルコピーごときに自前でコードなんか書いてられるかよ
885デフォルトの名無しさん (ワッチョイ 5922-UJUP)
2018/01/11(木) 17:55:46.00ID:S67tZ9jk0 ISO/IEC14882の現行規格を差し置いて何を今さら。。。
Windowsなら純正コンパイラが対応しているだろうが
Windowsなら純正コンパイラが対応しているだろうが
886デフォルトの名無しさん (ワッチョイ 39eb-0PCX)
2018/01/11(木) 17:57:34.42ID:zx3yce6m0 ニートが部下がどうのこうの言ってて笑える
887デフォルトの名無しさん (ワッチョイ 118a-QzTo)
2018/01/11(木) 18:03:32.29ID:VjH1J6HL0 >>886
お前の境遇はよく分かったから勝手に笑っとけ
お前の境遇はよく分かったから勝手に笑っとけ
888デフォルトの名無しさん (ワッチョイ 9ee7-5dQQ)
2018/01/11(木) 19:35:14.53ID:ga/Vikbp0889デフォルトの名無しさん (ワッチョイ 118a-QzTo)
2018/01/11(木) 19:49:16.17ID:VjH1J6HL0 boost依存は出来る限り避けたいなあ
890デフォルトの名無しさん
2018/01/11(木) 21:10:50.25 またこの荒らしか
Pythonのスレにも居たな
Pythonのスレにも居たな
891デフォルトの名無しさん
2018/01/11(木) 21:11:35.20892デフォルトの名無しさん (ワッチョイ f17f-XFrZ)
2018/01/11(木) 21:40:25.98ID:x0MoCwhB0 とりあえずだ、fcloseの戻り値判定してないのも誰かつっこんでやれよ。。。
普段気にするところじゃないけど、わりと重要だよな?書き込み系のclose処理
普段気にするところじゃないけど、わりと重要だよな?書き込み系のclose処理
893デフォルトの名無しさん (スプッッ Sdea-v0zr)
2018/01/11(木) 22:01:49.89ID:qoSoxo2Ld バッファサイズ8kだと少し大きなファイルコピーすると結構遅くなるよ
書き込み側はOSのキャッシュが効くからそうはならんだろうけど
メモリはいっぱいあるんだし動的確保でもして一気に128Mくらい行くべし
>>889
簡単な処理はあまり外部依存しないコードにしたいよね
書き込み側はOSのキャッシュが効くからそうはならんだろうけど
メモリはいっぱいあるんだし動的確保でもして一気に128Mくらい行くべし
>>889
簡単な処理はあまり外部依存しないコードにしたいよね
894デフォルトの名無しさん (ブーイモ MM8e-TSXj)
2018/01/11(木) 22:07:24.01ID:1W7yBpCQM 関数のconst参照引数って
コピーが重い方だと意味あるけど
intとかsize_tとかだと全く意味ないの?
コピーが重い方だと意味あるけど
intとかsize_tとかだと全く意味ないの?
895デフォルトの名無しさん
2018/01/11(木) 22:18:41.87 >>894
どっちが軽いか考えてみればいいじゃん
(1) 常に8バイトの数値(アドレス)を引数として渡すためにコピーして、呼び出された関数側でそのアドレスから値をコピーして、処理に使う
(2) 1〜8バイトの数値を引数として渡すためにコピーして、呼び出された関数側でその値を処理に使う
どっちが軽いか考えてみればいいじゃん
(1) 常に8バイトの数値(アドレス)を引数として渡すためにコピーして、呼び出された関数側でそのアドレスから値をコピーして、処理に使う
(2) 1〜8バイトの数値を引数として渡すためにコピーして、呼び出された関数側でその値を処理に使う
896デフォルトの名無しさん (ブーイモ MM8e-TSXj)
2018/01/11(木) 22:39:48.54ID:1W7yBpCQM897はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5e6f-QpsD)
2018/01/11(木) 23:12:05.45ID:jbhd+X3/0 >>896
内実としては参照はデリファレンスが自動化されたポインタと思ってもさしつかえないと思う。
ABI レベルで見ればポインタと互換性が有りさえするアーキテクチャも有る。 (言語仕様で保証しているわけではない。)
内実としては参照はデリファレンスが自動化されたポインタと思ってもさしつかえないと思う。
ABI レベルで見ればポインタと互換性が有りさえするアーキテクチャも有る。 (言語仕様で保証しているわけではない。)
898デフォルトの名無しさん (ワッチョイ 2a98-aOXM)
2018/01/12(金) 07:31:11.05ID:uquo2DHh0 はちみつ餃子はc++とscheme以外に何が使えるの?
899はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5e6f-QpsD)
2018/01/12(金) 07:51:53.51ID:UAqgHqOi0 そんなこと知ってどうするんや
900デフォルトの名無しさん (ワッチョイ 2a98-aOXM)
2018/01/12(金) 07:54:27.14ID:uquo2DHh0 好奇心ですよ好奇心
901デフォルトの名無しさん (ワッチョイ 39eb-0PCX)
2018/01/12(金) 07:54:44.69ID:xirJS+K20 マウント取りに行くんだろ
902デフォルトの名無しさん (ワッチョイ 2a98-aOXM)
2018/01/12(金) 07:56:18.96ID:uquo2DHh0 そんなに悪いかよ
じゃあ結構です
じゃあ結構です
903デフォルトの名無しさん
2018/01/12(金) 08:14:19.27 >>899
恥ずかしガンなって
恥ずかしガンなって
904デフォルトの名無しさん (ワッチョイ 8ae7-0PCX)
2018/01/12(金) 22:48:03.44ID:bn5FfgmT0 メンバがint2つくらいだとコピー渡しにするか参照渡しにするかちょっと悩む
int4つくらいまでならキャッシュの関係でコピーのほうが早いとか聞いたことあるけど本当なのかね
int4つくらいまでならキャッシュの関係でコピーのほうが早いとか聞いたことあるけど本当なのかね
905デフォルトの名無しさん (ワッチョイ 3d7f-QpsD)
2018/01/12(金) 22:50:47.10ID:iYjzTsi20 FF15ではベクトルクラスはコピーにしたら劇的に早くなったと言っていた
906はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5e6f-QpsD)
2018/01/13(土) 01:03:55.02ID:SxvD86sf0 ゲーム機は尖ったアーキテクチャだったりするから……。
やってみないとわからん。
やってみないとわからん。
907デフォルトの名無しさん (ワッチョイ 7db3-KClg)
2018/01/13(土) 11:47:10.72ID:ARtU5FzH0 いやゲーム屋なら当たり前の話だよ
IntelのCPUだってSSEあるし、__m128は出来るだけ値渡しした方がいいはず
(もちろんインライン展開された場合は除く
IntelのCPUだってSSEあるし、__m128は出来るだけ値渡しした方がいいはず
(もちろんインライン展開された場合は除く
908デフォルトの名無しさん (ワッチョイ b5b3-QpsD)
2018/01/13(土) 12:22:15.14ID:nudx6UkM0 >>905
ソース教えて欲しい
ソース教えて欲しい
909デフォルトの名無しさん (ワッチョイ 3d7f-QpsD)
2018/01/13(土) 12:24:13.94ID:A7bueCBw0910デフォルトの名無しさん (ワッチョイ b5b3-QpsD)
2018/01/13(土) 12:34:35.23ID:nudx6UkM0 >>909
ありがとうございます
ありがとうございます
911デフォルトの名無しさん (ワッチョイ 8abd-kJSF)
2018/01/13(土) 13:06:59.87ID:jbKISc2y0 インライン展開されたら値渡しだろうが参照渡しだろうが(あんま)関係無いんじゃ…
※ 参照と不十分なインライン展開が重なったときmemory aliasingによる最適化の阻害の危険性がちょっと増すぐらい
※ 参照と不十分なインライン展開が重なったときmemory aliasingによる最適化の阻害の危険性がちょっと増すぐらい
レス数が900を超えています。1000を超えると表示できなくなるよ。
