2016-06-04 3 views
0

Мне нужно сделать цикл, который получает три строки в качестве ввода от пользователя и останавливается, если ничего не вводится. Мой кодПроверьте, не вводит ли пользователь пустой C++

while(true){ 
cout << "Enter string1 string2 string3: "; 
getline(cin,s1, ' '); 
if(s1.empty()) 
    break; 
getline(cin, s2, ' '); 
getline(cin, s3); 
} 

Если я не вводить ничего, GetLine ждет, пока я по крайней мере ввода пробела. Как заставить его остановиться, когда ничего не введено?

+2

'если (s1.empy()) '->' если (s1.empty())' –

+1

Показать нам [MCVE] и объяснить, как это не работает. –

ответ

2

Мое предложение:

  1. Читать строку текста.
  2. Используйте линию для построения istringstream. Для извлечения переменных используйте istringstream.

Вот что я имею в виду:

std::string line; 
while (getline(std::cin, line)) 
{ 
    std::istringstream str(line); 
    if (!(str >> s1 >> s2 >> s3)) 
    { 
     break; 
    } 
} 
+0

Спасибо, имел ту же идею, не знал, как реализовать в правильном направлении. – ReeSSult