所以我有一个学校项目,需要我等待用户输入 Ctrl + Z 来结束一个循环。老师说最好的方法是检查cin >> x
,如果这是真的,他们还没有按 Ctrl + Z 输入。好吧,经过一些测试并来回走动,我无法弄清楚问题出在哪里,所以我制作了一个超级简单的代码版本,看看我是否可以修复它。什么都没有真正改变。无论如何,这里是简单的代码:
#include "Proj_02.h";
vector<int> dog;
string entry = "";
int value = 0;
void main()
{
Menu();
}
void Menu()
{
do
{
//Ask the user to enter a number
cout << "Enter a number: ";
//Save the number to a vector
do
{
cout << "k";
getline(cin, entry);
value = atoi(entry.c_str());
}while(value == 0);
while (cin >> value)
{
cout << "L";
dog.push_back(value);
}
//when the user presses Ctrl + Z stop asking
}while(cin >> entry);
//Display all of the numbers
for(int i = 0;i < dog.size();i++)
{
cout << dog.at(i) << endl;
}
system("PAUSE");
}
因此,当它运行时会发生什么,代码等待我再输入 2 个值,然后再执行任何输入后的任何操作。我的猜测是它与cin >> entry
导致某种缓冲区干扰的同时有关,但我对如何解决这个问题并没有任何可靠的想法。如果有人可以提供帮助,那就太棒了。