Разорвать цикл, когда пользователь просто вводит ввод в Visual C ++ или блоков кода - PullRequest
0 голосов
/ 01 июля 2011

Я хочу знать, как сделать остановку цикла while, когда пользователь просто вводит Enter без запроса продолжения или вот мой код:

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

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

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 01 июля 2011

Попробуйте это:

#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 голос
/ 01 июля 2011

Используйте getline.Разбить, если строка пуста.Затем преобразуйте строку в целое число.

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 вызовет исключение при ошибке, обработайте, как хотите.

...