Почему cin не съедает line feed?

Oct 03, 2007 14:04

Ребята, что за ерунда у меня получается... Вот такой код, беру у юзера четыре инпута, первый и четвертый - в character arrays, второй и третий - в обычные double.
Проблема: четвертый инпут программа не дает ввести, как я понимаю, съедает оставшийся после третьего инпута знак в input stream'е. Знак действительно имеет место быть, проверила peek()'ом, это line feed, 10 в ASCII. Почему же третий cin не съедает его? По идее, он должен выгрести оттуда все до конца. Кста, если очистить поток после третьего инпута, все работает..

cout << "\nEnter the name of the farm: ";
        cin.getline(farmsPointer[numFarms-1].farmName, MAX_FARM_NAME_SIZE - 1, '\n');
        cout << "Enter the tonnes of cane supplied: ";
        cin >> farmsPointer[numFarms-1].tonnesOfCane;
        cout << "Enter the CCS of the supplied cane: ";
        cin >> farmsPointer[numFarms-1].tonnesOfSugar;
        cout << "Enter the date for these data: ";
 !               //flushStream();
        cin.getline(farmsPointer[numFarms-1].updated, DATE_SIZE - 1, '\n');

Вот вывод на экран, четвертый инпут не берет, перескакивает на следующую cout:

Enter the name of the farm: first farm
Enter the tonnes of cane supplied: 1111
Enter the CCS of the supplied cane: 11
Enter the date for these data: Do you want to update more farms?
Previous post Next post
Up