Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
proont
1 / 1 / 1
Регистрация: 15.11.2014
Сообщений: 79
#1

Будет ли добавлен символ новой строки при ошибочном вводе? - C++

05.07.2015, 23:15. Просмотров 280. Ответов 7
Метки нет (Все метки)

После того, как пользователь введет число и нажмеn enter в поток будет передан символ новой строки '\n'. Будет ли добавлен символ новой строки, если пользователь ошибется и введет символ какой-нибудь и нажмет клавишу ввода?
C++
1
2
int a;
cin >> a;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.07.2015, 23:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Будет ли добавлен символ новой строки при ошибочном вводе? (C++):

Символ новой строки - C++
Всем привет) С маппировал текстовый файл в память. HANDLE file = CreateFile(fileNameWChar, GENERIC_READ | GENERIC_WRITE, 0, NULL,...

Символ новой строки в MFC - C++
При работе в MFC нужно вести протокол работы, то есть, сделали операцию a + b = c, записали в окно и т.д. Я создал Edit Control, с...

Std::cin, символ новой строки - C++
Подскажите, куда в данном примере после каждого cin'а девается символ новой строки? Насколько помню cin и cin.get его после себя оставляют...

Зачем здесь символ новой строки? - C++
Стивен Прата, Язык программирования С++, глава 7, пример 7 Никак не пойму, зачем здесь double temp; int i; for(i=0; i<limit;...

Отбрасывает ли std::cin символ новой строки? - C++
Здравствуйте. Есть следующий код (это задача из книги Праты): #include <iostream> const unsigned short strsize = 100; struct sBop ...

При вводе информации о новой сделке выдавать на экран общую сумму сделок биржи. - C++
Биржа ведет учет заключенных сделок: номер п.п. сторона 1.сторона 2, сумма договора, дата заключения. При вводе информации о новой сделке...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Renji
1901 / 1299 / 291
Регистрация: 05.06.2014
Сообщений: 3,718
05.07.2015, 23:37 #2
Цитата Сообщение от proont Посмотреть сообщение
Будет ли добавлен символ новой строки, если пользователь ошибется и введет символ какой-нибудь и нажмет клавишу ввода?
Будет добавлен флаг некорректного состояния потока (stream.bad()). После чего оттуда вроде бы вообще ничего не будет читаться, пока флаг вручную не сбросишь.
Krasiosoft
51 / 51 / 15
Регистрация: 01.06.2015
Сообщений: 189
06.07.2015, 00:59 #3
Если какие-то проблемы со считыванием числа, то можно считывать в строку, а потом уже преобразовывать в число с помощью atoi.
proont
1 / 1 / 1
Регистрация: 15.11.2014
Сообщений: 79
06.07.2015, 11:44  [ТС] #4
Renji, это понятно. А перевод на новую строку в поток добавиться?
Krasiosoft
51 / 51 / 15
Регистрация: 01.06.2015
Сообщений: 189
06.07.2015, 17:59 #5
Для корректности ввода:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    int num;
    do{
        if (cin.fail()){
            cin.clear();
            cin.sync();
            cout << "Error!" << endl;
        }
        cout << "num = ";
        cin >> num;
    }while(cin.fail());
 
    cout << "OK!" << endl;
    cout << "num = " << num <<endl;
Croessmah
Модератор
Эксперт CЭксперт С++
13133 / 7396 / 828
Регистрация: 27.09.2012
Сообщений: 18,227
Записей в блоге: 3
Завершенные тесты: 1
06.07.2015, 18:05 #6
Цитата Сообщение от Krasiosoft Посмотреть сообщение
Для корректности ввода:
Войдет в бесконечный цикл под Linux'ом(gcc) в случае ошибки ввода
Krasiosoft
51 / 51 / 15
Регистрация: 01.06.2015
Сообщений: 189
06.07.2015, 18:26 #7
Цитата Сообщение от Croessmah Посмотреть сообщение
Войдет в бесконечный цикл под Linux'ом(gcc) в случае ошибки ввода
Проверял под Windows(gcc). Под Linux'ом нету возможности проверить. А как там обойти это?
Croessmah
Модератор
Эксперт CЭксперт С++
13133 / 7396 / 828
Регистрация: 27.09.2012
Сообщений: 18,227
Записей в блоге: 3
Завершенные тесты: 1
06.07.2015, 18:47 #8
Проверял под Windows(gcc)
http://www.cplusplus.com/reference/i.../istream/sync/
Specifics of the operation depend on the particular implementation of the stream buffer object associated to the stream.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2015, 18:47
Привет! Вот еще темы с ответами:

При вводе цифры от 0 до 9 будет выводиться ее название - C++
Написать программу для выполнения следующих действий. При вводе цифры от 0 до 9 будет выводиться ее название. (!)Использовать оператор go...

Как убрать символ новой строки, применяя перегруженный оператор <<? - C++
Друзья! Ну то есть формируются строки хитрым способом (не вручную, лучше не углубляться в это) Потом получаю вектор этих строк. Надо...

Ввести символьную строку. Распечатать каждый символ массива с новой строки - C++
Ввести символьную строку. Распечатать каждый символ массива с новой строки.

Функция getline считывает несколько строк из файла, игнорируя символ новой строки - C++
Всем доброго дня! В С++ я новичок, сам себе придумываю задачки, просто для тренировки. Столкнулся с непонятным для меня поведением...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
06.07.2015, 18:47
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru