空のユーザー入力を検出するコードをいくつか書きました。
if(cin.get() == '\n')
{
cout<<"ENTER WAS PRESSED"<<endl;
}
しかし、何らかの理由でユーザーが ENTER を押すと、ENTER を押すと次の行に進み続けます。
このコードはあなたの仕事をしていると思います。
#include <iostream>
#include <sstream>
using std::cin;
using std::cout;
using std::string;
int main()
{
string in = "";
int n = 0;
while (true)
{
cout << "Please enter a number: ";
getline(cin, in);
std::stringstream s(in);
if (s >> n)
break;
cout << "Invalid number, please try again\n";
}
return 0;
}
get()
私の知る限り、関数を使用して数字を入力するべきではないと思います。get()
関数は文字を入力するように設計されており、書式なし入力関数として動作します。この>>
仕事にはオペレーターの方が向いているようです。ENTER キーを押すと、抽出オペレーター>>
は入力を無視するため、入力を待ちます。ただし、改行入力はcin
入力ストリームに格納されます。peek()
と関数の組み合わせを試してseekg()
、入力ストリーム内の既存の改行入力をチェックし、必要なことを行うこともできます。