【发布时间】:2019-07-23 09:16:16
【问题描述】:
我编写了一个函数,该函数只有在输入int 时才会执行。如果cin 失败,它将再次执行do{...} while(),直到输入int,而不是char。
我的问题是,一旦我输入char,它就会陷入无限循环。我说不出为什么。
int syst ()
{
int basisSys;
bool opAga = false;
do
{
cout << "Type the base you wanna calc. in" << endl;
cin >> basisSys;
if (cin.fail())
{
opAga = true;
}
}
while (opAga == true);
cout << endl << "You are calc. in " << basisSys << "system" << endl << endl;
return basisSys;
}
【问题讨论】:
-
当
cin无法读取int时,字符仍在流中。你正在寻找cin.ignore -
不是从流中读取
int,而是使用(例如)std::getline()读取std::string。然后检查字符串的内容以查看它是否包含将被读取为int的数据。如果是,则从字符串中读取整数值。如果不是,则丢弃输入,然后继续。 -
通过使用输入运算符
>>,您将确保输入是一个数字。尝试将其用作条件,例如:while (cin >> num){//do your stuff}
标签: c++ function loops char int