带空格的输入输入所有循环

时间:2014-03-10 22:36:56

标签: c++ if-statement while-loop cin

我的程序在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');
        }
    }

1 个答案:

答案 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
}