我有一个 while 循环,它询问用户的查询并接受响应,可以是一个词,也可以是一个句子。输出让我难以置信。
std::string response;
while (response != "!quit")
{
cout << "Query? ";
cin >> response;
if (response == "!quit")
{
cout << "Thank you for using this program!";
exit(0);
}
}
Run Code Online (Sandbox Code Playgroud)
输出如下所示:
Query? how are you
Query? Query? Query? how are you today
Query? Query? Query? Query? hi
Query?
Run Code Online (Sandbox Code Playgroud)
为什么它打印出与响应相同数量的单词的“查询”?
std::cin 将阅读,直到它变成一个空白。
因此,当您输入“你好吗”时,cin将被调用三次,以便它消耗所有三个空格。所以第一个cin会读“如何”,第二个“是”,第三个“你”。
所以教你的是,为了阅读一个句子,你需要另一种方法,例如通过使用std::getline,像这样:
std::getline(std::cin, response)
Run Code Online (Sandbox Code Playgroud)
详情请阅读什么是函数getline和std :: istream的::运算符>>()之间的区别?
PS:请注意在使用 读取数字后可能出现的尾随换行符cin,您可能希望使用该字符,例如使用getchar();.
| 归档时间: |
|
| 查看次数: |
84 次 |
| 最近记录: |