#cpp #linux
Вопрос следующий. В цикле нужно читать строки, содержащие пробелы. Признак конца строки - символ '\n'. Пробовал функции cin.getline(), gets(). Результат один - читает один раз, а затем зацикливание. Вот собственно код. #includeusing namespace std; int main() { int Exit = 1; char mes[20]; while (Exit) { cout << "Введите строку" << endl; cin.clear(); cin.getline(mes, 19, '\n'); cout << "Вы ввели: " << mes << endl << "1 - продолжить\n0 - выход" << endl; cin >> Exit; } return 0; }
Ответы
Ответ 1
Классическая проблема. После того, как число было считано в переменную Exit, в буфере потока cin остался непрочитанный символ переноса \n. Он-то в последующем чтении из потока все и портит. Его можно убрать, например, так cin >> Exit; cin.ignore (7777, '\n');Ответ 2
Также я так полагаю имелось в виду: cin.getline(mes, 19, '\n');Ответ 3
Также можно использовать: cin.sync() // или cin.ignore(cin.rdbuf()->in_avail()); cin.rdbuf()->in_avail() //возвращает количество символов в буфере
Комментариев нет:
Отправить комментарий