Большинство средств форматирования предназначены для форматирования вывода (см. п. п. 27.6.2.5 в [1]). Однако некоторые из них оказывают влияние на ввод (см. п. п. 27.6.1.2 в [1]). Как уже отмечалось, сброс флага skipws (или использование манипулятора noski pws) отменяет пропуск символов-разделителей при вводе.
Если выставлен флаг boolalpha (или использован манипулятор), то во входном потоке булевы значения должны быть представлены как строки true и false (без кавычек). Если этот флаг не установлен (а по умолчанию он не установлен), то во входном потоке должны быть заданы числа 0 (false) и 1 (true).
На ввод влияют флаги группы basefield (манипулятор set base () или манипуляторы dec, hex и oct). Если ни один флаг не установлен (или использован манипулятор setbase(0)), то основание вводимого числа определяется при вводе. Если в начале числа стоит префикс 0х или 0Х, то число считается шестнадцате-ричным; если числолгачинается с префикса 0, то оно считается восьмеричным. Во всех остальных случаях число считается десятичным.
Если установлен один из флагов (или использован один из манипуляторов: dec, hex, oct, setbase(10), setbase(8), setbase(16)), то он задает фиксированное основание; в соответствии с основанием выполняется контроль вводимых символов числа.
Задание ширины поля (метод width() или манипулятор setw()) влияет на ввод в объект типа string или в символьный массив. Если размер поля равен п, то ввод выполняется либо до первого символа-разделителя, либо до п символов, например:
char s[81]: // чтение не более 80 символов cin >> setw(sizeof(s)) >> s;
Вводится не более 80 символов, хотя вызов si zeof (s) возвращает 81. После этого ширина поля сбрасывается в нуль.
При вводе других типов данных значение ширины поля не играет никакой роли. Тем не менее при перегрузке операции ввода можно реализовать ввод из поля фиксированной длины. Для этого нужно сначала выполнить ввод в строку, а потом использовать строковый поток для чтения из этой строки.
Если вы хотите узнать на завтра погоду в Минске, тогда заходите сюда http://www.gismeteo.by/weather-minsk-4248/.
Контрольные вопросы
1. Объясните, зачем нужны исключения?
2. Назовите ключевые слова С++, которые используются при обработке исключений.
3. Исключение — это: \) событие;
2) ситуация;
3) объект;
4) ошибка в программе;
5) прерывание.
4. Каким образом исключение генерируется?
5. Каковы функции контролируемого блока?
6. Что обозначается ключевым словом catch?
1) контролируемый блок;
2) блок обработки исключения;
3) секция-ловушка;
4) генератор исключения;
5) обработчик прерывания.
Опубликовал Kest
May 18 2014 20:17:38 ·
0 Комментариев ·
2851 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.