Страницы

Поиск по вопросам

суббота, 8 февраля 2020 г.

Как прочитать строки с пробелами в цикле в С++?

#cpp #linux


Вопрос следующий. В цикле нужно читать строки, содержащие пробелы. Признак конца
строки - символ '\n'.  Пробовал функции cin.getline(), gets(). Результат один - читает
один раз, а затем зацикливание. Вот собственно код.

#include 
using 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() //возвращает количество символов в буфере

Комментариев нет:

Отправить комментарий