0

奇妙な理由で、getline()関数が正常に機能していません。再帰を介してプログラムループがあります(return main();)。次のコードを初めて実行するときは、問題ありません。

cout << "Enter a phrase: ";
string user;
getline(cin, user);

ただし、再帰が呼び出された後、プログラムは入力を許可するステップをスキップします。その結果、文字列ユーザーは空になります。なぜ何かアイデアはありますか?

ありがとう。

4

2 に答える 2

6

mainへの再帰呼び出しは、C ++では明確に定義されていません(Cでは定義されています)。それが問題の原因である場合とそうでない場合があります。

于 2011-04-14T09:36:53.397 に答える
5

cin.clear()ループする前に、フラグをクリアするために呼び出します。

編集:指摘してくれた@Xeoに感謝します。また、cin.ignore()改行文字を破棄するように呼び出す必要があります-これはまだバッファに残っている可能性があります...

于 2011-04-14T09:32:22.707 に答える