繁体   English   中英

While 循环对 C++ 中的字符串中的每个单词重复

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM