[英]While loop repeats for every word in a string in C++
我正在尝试制作一个魔术 8 球,它为除“再见”之外的任何输入提供随机预设答案。 每次调用 void function magic8ball() 时,它都会生成一个从 0 到 19 的随机数,并将相应的响应打印到控制台。
int main()
{
string question;
cin >> question;
while (question != "bye") {
magic8ball();
cout << "~Ask another question.\n";
cin >> question;
}
return 0;
}
出于某种原因,如果问题的输入有多个单词 / 字符之间有空格,则在再次要求输入之前,循环会针对每个单词重复。 我坚持了一个“cout << question << endl;” 在那里,它显示了字符串中的每个单词(以及magic8ball的调用和“问另一个”)。 例如
>hi frend
... Ask again later
hi
~Ask another question.
... Don't count on it
frend
~Ask another question.
如何防止 while 循环将字符串视为一系列单词? 为什么 cin 不与 magic8ball() 和 cout 一起触发?
std::cin
在看到空格时停止读取。 空格也算作空白。
如果您希望字符串有空间,请使用std::getline()
int main()
{
string question;
std::getline(std::cin, question);
while (question != "bye") {
magic8ball();
cout << "~Ask another question.\n";
std::getline(std::cin, question);
}
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.