c++ DO循环很奇怪

C++ DO loop being strange

本文关键字:循环 DO c++      更新时间:2023-10-16

首先,这是我的代码:

string text;
do {
   cout << "Enter text: ";
   ws(cin);
   getline(cin, text);
} while (!text.empty());
// do stuff

我希望我的代码做什么?
-检查用户输入是否为空;
如果userinput = empty,循环到开头,他必须输入新的文本。
如果userinput !=空,退出循环并继续程序。


-当我输入文本时,循环从头开始,我必须重新输入文本。
-当我不输入任何东西,只是键入enter,我的程序是无限期等待,我需要按Ctrl+C退出

这不是一个repeat-until,而是一个do-while循环,使用:

string text;
do {
   cout << "Enter text: ";
   ws(cin);
   getline(cin, text);
} while (text.empty());
//      ^^

基本上,如果条件是true,则再次循环,否则将打破循环。在你的例子中,如果字符串不为空,它将循环,如果字符串为空,它将终止循环。