getline が入力を要求しない
コード内で getline(cin, mystr); を呼び出すと、プログラムは入力を求めるプロンプトを表示できません。ユーザーが入力します。これは、以前に cin >> を使用したときに、名前;そしてシン>> i;、ユーザーが応答を入力した後に入力した改行文字が入力バッファーに残されました。
空白区切り
>>演算子は空白で区切られます。これは、ユーザーがデータを入力した後に Enter キーを押すと、改行文字が変数に格納されず、入力バッファーに残ることを意味します。
getline の動作
getline も空白で区切られます。 getline を呼び出すと、入力バッファーで改行文字が検索されます。改行文字はバッファー内にすでに存在しているため、getline は探しているものをすぐに見つけ、ユーザーに入力を求めません。
解決策
この問題を解決するにはでは、次のいずれかの方法を使用できます:
改良されたコード:
getline のみを使用するコードの改良版を次に示します:
#include <iostream> #include <string> #include <sstream> using namespace std; int main() { string name; int age; float price; cout << "Hello World!" << endl; cout << "What is your name? "; getline(cin, name); cout << "Hello " << name << endl; cout << "How old are you? "; getline(cin, age); cout << "Wow " << age << endl; cout << "How much is that jacket? "; getline(cin, price); stringstream(price) >> price; cout << price << endl; system("pause"); return 0; }
以上が「cin」を使用した後に「getline」が入力を求めるプロンプトを表示しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。