【发布时间】:2021-08-13 06:35:49
【问题描述】:
我正在编写与用户输入相关的代码。我想继续接收用户的输入,直到用户输入两个空行(用户连续两次为两个空行点击“返回”按钮,第三次“返回”时用户输入终止。)
我目前的代码是:
int number_of_empty_res = 0;
string data;
vector<string> myvec;
while (getline(cin, data) && !data.empty())
{
if (data == "")
{
number_of_empty_res += 1;
myvec.push_back (data+' ');
}
if (number_of_empty_res == 2)
{
break;
}
else
{
number_of_empty_res = 0;
myvec.push_back (data+' ');
}
}
for (int i = 0; i < myvec.size(); i++)
{
cout << myvec[i];
}
我使用向量作为缓冲区,将输入的每一行推回向量中,因为我想对用户输入做一些有用的事情。我也在统计连续空行的数量。
目前,我的代码在用户连续按两次“返回”按钮后终止(即,用户给了我一个空白行,当再次按下“返回”键时,程序结束)。我正在研究我的代码,我认为如果我有两个连续空白行的“if”条件,代码会中断,但这没有发生......我尝试增加指定的空白数量,但似乎这实际上对代码没有影响,因为代码如前所述不断终止。我还尝试了“while”循环的条件。我认为也许 '!data.empty()' 可能是我的代码中有问题的部分,但是在删除它后,用户输入似乎永远不会终止。
感谢任何帮助和想法!谢谢!
【问题讨论】:
-
当您尝试使用调试器跟踪程序逻辑时发生了什么?