我正在嘗試制作一個神奇的 8 球,它為除“再見”之外的任何輸入提供隨機預設答案。每次呼叫 void 函式 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 一起觸發?
uj5u.com熱心網友回復:
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;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/368825.html
上一篇:在C中掃描一個300位數字
下一篇:Arduino定時器回圈
