cin
ユーザーが値を入力せずにプッシュENTER
するだけで、cin
これが有効な入力として認識されるように、どのように使用するのか疑問に思いました。
Tomek
質問する
16151 次
5 に答える
15
あなたはおそらく試してみたいでしょうstd::getline
:
#include <iostream>
#include <string>
std::string line;
std::getline( std::cin, line );
if( line.empty() ) ...
于 2008-09-29T21:29:19.997 に答える
5
ユーザー入力std::getline
が非常にうまく機能することがわかりました。
これを使用して行を読み取り、読み取ったものを破棄することができます。
このようなことをすることの問題点は、
// Read a number:
std::cout << "Enter a number:";
std::cin >> my_double;
std::count << "Hit enter to continue:";
std::cin >> throwaway_char;
// Hmmmm, does this work?
ユーザーが「4.5 - about」などの他のゴミを入力すると、同期が外れて、ユーザーが次回表示する必要があるプロンプトを出力する前に、最後に書いたものを読むのが非常に簡単になります。
ですべての完全な行を読み取りstd::getline( std::cin, a_string )
、返された文字列を解析すると (たとえば、istringstream やその他の手法を使用して)、文字化けした入力に直面しても、表示されるプロンプトを std::cin からの読み取りと同期させることがはるかに簡単になります。
于 2008-09-29T21:27:12.140 に答える
2
cinを行います。getlineはあなたの問題を解決しますか?
于 2008-09-29T21:23:58.543 に答える
2
ユーザーが整数を入力するのではなく、Enter キーを押したことを検出するには、次のようにします。
char c;
int num;
cin.get(c); // get a single character
if (c == 10) return 0; // 10 = ascii linefeed (Enter Key) so exit
else cin.putback(c); // else put the character back
cin >> num; // get user input as expected
または:
char c;
int num;
c = cin.peek(); // read next character without extracting it
if (c == '\n') return 0; // linefeed (Enter Key) so exit
cin >> num; // get user input as expected
于 2015-03-13T03:43:06.080 に答える
0
cin のバッファリングを解除してみてください (デフォルトではバッファリングされています)。
于 2008-09-29T21:32:40.533 に答える