当用户输入visual c ++或代码块中的输入时,打破循环

时间:2011-06-30 20:28:37

标签: c++ visual-c++ codeblocks

我想知道如何在用户输入Enter而不要求继续时停止while循环,或者这是我的代码:

int main()
{
    bool flag = true;
    int userInput;

    while(flag){
        cout<<"Give an Integer: ";
        if(!(cin >> userInput) ){ flag = false; break;}
        foo(userInput);
    }
}

提前致谢。

2 个答案:

答案 0 :(得分:2)

试试这个:

#include <iostream>
#include <string>
#include <sstream>

using namespace std;

int main()
{
    int userInput;
    string strInput;

    while(true){
        cout<<"Give an Integer: ";
        getline(cin, strInput);
        if (strInput.empty())
        {
            break;
        }

        istringstream myStream(strInput);
        if (!(myStream>>userInput))
        {    
            continue; // conversion error
        }

        foo(userInput);
    }

    return 0;
}

答案 1 :(得分:1)

使用getline。如果字符串为空则中断。然后将字符串转换为int。

for(std::string line;;)
{
    std::cout << "Give an Integer: ";
    std::getline(std::cin, line);
    if (line.empty())
        break;
    int userInput = std::stoi(line);
    foo(userInput);
}

std::stoi会在失败时抛出异常,无论如何都要处理它。