2017-01-19 3 views
0

В части моего кода есть оператор gets() внутри цикла, который должен запрашивать ввод при каждом итерации. Тем не менее, он только запрашивает ввод один раз и не запрашивает снова, когда цикл запускается снова, как будто какой-то ввод уже сделан. Это действительно раздражает, потому что, похоже, что-то не так.Оператор gets() в цикле запрашивает ввод только один раз

while(5) { 
    cout<<"Is your number "<<x<<" ?\n[yes/no]\n"; 
    gets(ans); 
    if (strcmpi(ans,"yes")==0) 
     break; 
} 
+4

Обратите внимание, что 'gets' был удален из C++ 14 и более поздних версий. Вы должны переключиться на 'getline', если вы работаете со строками или просто используете' >> ' – NathanOliver

+0

@ sleekmaster292. Как получается, что даже не поддерживается стандартом C, связанным с C++? –

+0

[mcve] пожалуйста. Кроме того, не используйте 'strcmpi'. '==' отлично работает для строк – AndyG

ответ

0

get() не внутри C++ [14] и более поздних версиях. Теперь вы используете getline(). std::cin работает эффективно, но зависит от того, что вы делаете, или ваших личных предпочтений.

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