1. ホーム
  2. c++

[解決済み] C++でgetline()を使う

2022-03-09 19:33:03

質問

ユーザが入力したメッセージを取得するために、getlineメソッドを使用しているのですが、以下のような問題があります。

string messageVar;
cout << "Type your message: ";
getline(cin, messageVar);

しかし、出力値の取得が止まらないのですが、これはどうしたことでしょうか?

解決方法は?

を使用している場合 getline() の後に cin >> something の場合、その間にあるバッファから改行文字をフラッシュする必要があります。これを行うには cin.ignore() .

こんな感じでしょうか。

string messageVar;
cout << "Type your message: ";
cin.ignore(); 
getline(cin, messageVar);

このようなことが起こるのは >> 演算子は改行を残す \n 文字が入力バッファに含まれます。のような非正規の入力をするときに問題になるかもしれない。 getline() は、改行文字が見つかるまで入力を読み込みます。この場合,改行文字が見つかるとすぐに読み込みをやめてしまいます。 \n というのは、前の操作でぶら下がったままになっていたものです。