7

正当な理由はありますか?

std::string input;
std::getline(std::cin, input);

getline 呼び出しはユーザー入力を待ちませんか? 何とかシンの状態がめちゃくちゃ?

4

3 に答える 3

6

ほとんどの場合、他のデータを読み取った後に文字列を読み取ろうとしていますint

入力を検討してください:

11
is a prime

次のコードを使用する場合:

std::cin>>number;
std::getline(std::cin,input)

これgetlineは 11 以降の改行のみを読み取るため、ユーザーの入力を待っていないという印象を受けます。

これを解決する方法は、ダミーを使用しgetlineて番号の後の改行を消費することです。

于 2011-07-25T16:14:37.260 に答える
2

次のコードをテストしたところ、問題なく動作しました。

#include <iostream>
using namespace std;
int main()
{
    string  input;
    getline(cin, input);
    cout << "You input is: " << input << endl;
    return 0;
}

あなたのプログラムでは、入力バッファにすでに何かがあると思います。

于 2011-07-25T16:22:28.813 に答える