1

空のユーザー入力を検出するコードをいくつか書きました。

if(cin.get() == '\n')
{
   cout<<"ENTER WAS PRESSED"<<endl;
}

しかし、何らかの理由でユーザーが ENTER を押すと、ENTER を押すと次の行に進み続けます。

4

2 に答える 2

3

このコードはあなたの仕事をしていると思います。

#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()、入力ストリーム内の既存の改行入力をチェックし、必要なことを行うこともできます。

于 2013-07-12T22:30:38.763 に答える