我的程序在3个单独的循环中要求3个输入。我怎么进入
4 2 5有空格它填入所有输入input1,input2,input3?如果发生这种情况,有没有办法让它出错?
int input1 = 0
while (!(cin >> input1) || input1 < 0)
{
if (!cin)
{
cout << "Please enter a positive value: ";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
}
int input2 = 0
while (!(cin >> input2) || input2 < 0)
{
if (!cin)
{
cout << "Please enter a positive value: ";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
}
int input3 = 0
while (!(cin >> input3) || input3 < 0)
{
if (!cin)
{
cout << "Please enter a positive value: ";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
}
答案 0 :(得分:2)
您可以使用std::getline
一次性读取整行(包括空格),然后您可以使用std::string::find
检查字符串中是否找到空格:
std::string in;
std::getline(std::cin, in);
if (in.find(' ') != std::string::npos) {
// whitespace found / error
} else {
// no whitespace found
}