質問

ユーザーが値を入力せずに 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

バッファリングしないでみてください(デフォルトでバッファリングされます)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top