我编写了一个代码来检查int cin中的char'export'。但我发现我需要在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);
}
答案 0 :(得分:0)
您正在使用的“ std :: cin.ignore()”中的第一个参数只是很大的数字。这应该是输入缓冲区可以容纳的最大字符数。在不同的系统上,甚至对于不同的编译器,头文件中的这个数字可能都不同。
您需要按两次Enter键,因为缓冲区中没有可忽略的内容。它正在等待输入忽略的内容。有些人会使用它在“返回0;”之前暂停程序。