2016-10-30 4 views
-1

Цикл не прерывается даже после ввода пустой строки.Выход из цикла, введя пустую строку

string temp; 
cin >> temp; 
while (!temp.empty()) { 
    cout<<"Hello"<<endl; 
    cin>>temp; 
} 

Когда я не даю ввод и просто нажимаю enter, он должен выйти из цикла. Пожалуйста, помогите мне.

+0

если (вход == "") {/ * делать вещи * /} работает для меня – Charlie

+0

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

+0

Вы пытались проверить значение «темп» после нажатия на кнопку «Ввод»? Я подозреваю, что инициализация пустой строки перед cin >> temp должна помочь. – StahlRat

ответ

0

попробовать команду break continue пропустить текущую итерацию цикла

+0

Просьба предоставить более подробную информацию для вашего ответа. –

+0

Я хочу, чтобы пользователь вводил ввод, пока не войдет в пустую строку. Пожалуйста, предоставьте подробности. –

0

cin подбрасывает flagfailbit, когда нет символов читать из inputstream, и никогда не продолжает пытаться extract символы из inputstream. Вы можете достичь своей цели с помощью getline(cin, temp). getline() читает до deliminatingcharacter в stream, а затем отбрасывает его, даже если бы не было никаких других символов в stream, оставив temp пустым, и возвращение 0 из temp.empty().

string temp; 
getline(cin, temp); 
while (!temp.empty()) { 
    cout<<"Hello"<<endl; 
    getline(cin, temp); 
} 

http://www.cplusplus.com/reference/istream/istream/operator-free/

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