Разорвать цикл, когда пользователь просто вводит ввод в Visual C++ или блоков кода

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

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

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

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

2 ответа

Решение

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

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

#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;
}
Другие вопросы по тегам