2015-04-01 4 views
0

Следующий код предназначен для объединения слов, введенных пользователем.Недопустимый ввод для std :: cin

#include <iostream> 
#include <string> 


int main() { 
    // insert code here... 

    std::string s; 
    std::string concString; 
    while (std::cin >> s) 
    { 
     concString = concString + s; 
    } 
    std::cout << concString << std::endl; 
    return 0; 
} 

Я застреваю в этом цикле while во время выполнения, из-за которого я не могу напечатать конкатенированную строку. Как выйти из этого цикла? Что такое недопустимый ввод для std :: cin?

+0

Используйте «break» в условном выражении, чтобы выйти из цикла while. Условие может быть любым из максимального числа прочитанных слов или определенного слова. – shark1608

ответ

0

Как правило, такой цикл останавливается на в конце файла, а не на недопустимом вводе.

В среде * NIX, вы можете отправить обычно конец файла на терминал с CTRL +д, а на консоли окна, CTRL +г.

См https://stackoverflow.com/a/16136924/1084944

Вы могли бы, однако, реализовать свой собственный дополнительный способ для обозначения конца ввода. Например, если ваши пользователи вводят пустую строку, когда это делается, или слово quit или такое. После того, как вы его выбрали, вы должны сообщить об этом пользователю, и вам придется структурировать свой цикл, чтобы иметь возможность обнаружить эти условия и выйти.

Смежные вопросы