我编写了一个代码来检查int cin中的char'exit'。但是我发现我需要在cin.ignore
中设置诸如'\n'
之类的定界符,并在运行命令时将其输入,我认为这并不友好。
如何更改代码以跳过提取步骤,也许使用其他代码代替cin.ignore
?
对所有尝试阅读我的英语并回答我的人表示抱歉,因为我不是母语为英语的用户。我的意思是cin.ignore
将提取并丢弃字符,直到找到给定字符为止,它是否有一种方法可以清除C ++中的cin缓冲区而丢弃字符而无需提取?
void checkcin(int &y)
{
string input = "", ans;
cin.clear();
cin.ignore(INT_MAX, '\n');
getline(cin, input);
while (input == "exit")
{
cout << "Are you sure to exit: ";
cin >> ans;
if (ans == "yes")
{
cout << "Bye." << endl;
exit(0);
}
else if (ans == "no")
{
cout << "Then welcome back!";
cout << "Input again: ";
cin >> input;
}
}
y = std::stoi(input);
}
您正在使用的“ std :: cin.ignore()”中的第一个参数只是很大的数字。这应该是输入缓冲区可以容纳的最大字符数。在不同的系统上,甚至对于不同的编译器,头文件中的此数字可能都不同。
您需要按两次Enter键,因为缓冲区中没有可忽略的内容。它正在等待输入忽略的内容。有些人会使用它在“返回0;”之前暂停程序。]