Разорвать цикл, когда пользователь просто вводит ввод в 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;
}