getline 不提示输入
在你的代码中,当你调用 getline(cin, mystr); 时,程序无法提示用户进行输入。这是因为您之前使用 cin >> 时姓名;和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中文网其他相关文章!