C ++がcinに戻り文字を読み取らせる
質問
ユーザーが値を入力せずに ENTER
を押すだけで cin
が認識するように、 cin
を使用する方法を知りたいこれを有効な入力として。
解決
std :: getline
:
#include <iostream>
#include <string>
std::string line;
std::getline( std::cin, line );
if( line.empty() ) ...
他のヒント
ユーザー入力に対して 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?
は、ユーザーが他のゴミを入力した場合です。 &quot; 4.5-概要&quot;同期から抜け出し、ユーザーが次に表示する必要があるプロンプトを印刷する前にユーザーが最後に書いた内容を読むのは非常に簡単です。
std :: getline(std :: cin、a_string)
ですべての完全な行を読んでから、返された文字列を解析する(たとえば、istringstreamまたは他の手法を使用して)入力が文字化けしていても、std :: cinからの読み取りと同期した印刷プロンプト。
cin。 getline は問題を解決しますか?
整数を入力するのではなく、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
バッファリングしないでみてください(デフォルトでバッファリングされます)。
所属していません StackOverflow