- スレを勃てるまでもないC/C++の質問はここで 24 [転載禁止]©2ch.net
215 :デフォルトの名無しさん[]:2016/01/20(水) 14:33:44.70 ID:7Lwquj6u - すみません実際にはgetlineで読み込んでいます
std::cin >> strでも同じ問題が起きたのでこのような例にしました。 実際には下のコードを書いています std::string cmd, token; while (std::getline(std::cin, cmd)) { // 入力されたコマンドを入力ストリームとする std::istringstream ss_cmd(cmd); // 空白は読み飛ばしながら、tokenに代入 ss_cmd >> std::skipws >> token; if (token == "") { //いろいろな処理 } else if (token == ... }
|
- スレを勃てるまでもないC/C++の質問はここで 24 [転載禁止]©2ch.net
216 :207[]:2016/01/20(水) 14:40:09.85 ID:7Lwquj6u - このプログラムでgetlineが実行され標準入力からの受付待ちになったとき
コピペしてあった4096文字以上の文字列を標準入力にペーストすると、4096文字目以降が途切れて表示されなくなってしまいます それ以降キーボードから入力しても何も表示されず、受け付けてくれないようです 標準入力以外(ファイルストリーム)からの入力に変更することは仕様上できないので、なんとか標準入力の制限を取っ払う方法を調べていましたが、見つからずここで質問させていただきました
|
- スレを勃てるまでもないC/C++の質問はここで 24 [転載禁止]©2ch.net
218 :207[]:2016/01/20(水) 15:02:48.12 ID:7Lwquj6u - >>208 >>209 >>213
教えてくれてありがとう。詳しい状況説明します GUIと標準入力でやりとりするプログラムを書いています GUIは将棋所というプログラムでオープンソースではないです 私が作ってるのは将棋の思考エンジンです これで将棋を指すと807手目くらいで思考エンジンに送る文字列が4096文字を超えてしまい、思考エンジンの動作が止まってしまうようです
|
- スレを勃てるまでもないC/C++の質問はここで 24 [転載禁止]©2ch.net
219 :207[]:2016/01/20(水) 15:08:19.19 ID:7Lwquj6u - >>217
コマンドプロンプトを立ち上げて4096文字以上の文字列をペーストしたところちゃんと表示してくれたので、大丈夫なんじゃないかと思ってるのですが…… しかも、以前2000000文字を標準入力から受け取るプログラムを書いたことがあって、そのときは問題なく動いたはずなんです この問題です→http://yukicoder.me/problems/686
|
- スレを勃てるまでもないC/C++の質問はここで 24 [転載禁止]©2ch.net
221 :207[]:2016/01/20(水) 15:12:22.18 ID:7Lwquj6u - >>220
そうなんですね……ありがとう 連投すみませんでした
|