Cout width c что это
Поточный ввод-вывод в C++
Поточный ввод-вывод в C++ выполняется с помощью функций сторонних библиотек. В С++, как и в С, нет встроенных в язык средств ввода-вывода.
Библиотека iostream определяет три стандартных потока:
Для их использования в Microsoft Visual Studio необходимо прописать строку:
Для выполнения операций ввода-вывода переопределены две операции поразрядного сдвига:
Возможно многократное назначение потоков:
cout
Ввод информации
При этом из входного потока читается последовательность символов до пробела, затем эта последовательность преобразуется к типу идентификатора, и получаемое значение помещается в идентификатор:
Возможно многократное назначение потоков:
cin >> переменная1 >> переменная2 >>. >> переменнаяn;
При наборе данных на клавиатуре значения для такого оператора должны быть разделены символами (пробел, \n, \t ).
Особого внимания заслуживает ввод символьных строк. По умолчанию потоковый ввод cin вводит строку до пробела, символа табуляции или перевода строки.
Результат выполнения
Для ввода текста до символа перевода строки используется манипулятор потока getline() :
Результат выполнения
Манипуляторы потока
В С++ имеется ряд манипуляторов. Рассмотрим основные:
Манипулятор | Описание |
endl | Помещение в выходной поток символа конца строки ‘\n’ |
dec | Установка основания 10-ой системы счисления |
oct | Установка основания 8-ой системы счисления |
hex | Установка основания 16-ой системы счисления |
setbase | Вывод базовой системы счисления |
width(ширина) | Устанавливает ширину поля вывода |
fill(‘символ’) | Заполняет пустые знакоместа значением символа |
precision(точность) | Устанавливает количество значащих цифр в числе (или после запятой) в зависимости от использования fixed |
fixed | Показывает, что установленная точность относится к количеству знаков после запятой |
showpos | Показывает знак + для положительных чисел |
scientific | Выводит число в экспоненциальной форме |
get() | Ожидает ввода символа |
getline(указатель, количество) | Ожидает ввода строки символов. Максимальное количество символов ограничено полем количество |
Пример Программа ввода-вывода значения переменной в C++
Та же программа, написанная на языке Си
Пример Использование форматированного вывода
Результат выполнения
Еще один пример использования форматированного вывода: для t∈[0;3] с шагом 0,5 вычислить значение y=cos(t).
Результат выполнения
Электронная библиотека
Библиотека iostream содержит средства, позволяющие выдать данные в той или иной системе счисления с различной точностью, прижатыми к левому или правому концу поля. Средства форматированного вывода позволяют управлять и другими деталями формата выдачи. Все эти нюансы определяются несколькими функциями и флажками, заданными в классе ios битами переменной состояния форматизации следующим образом:
skipws = 0x0001, // Пропускать пробелы при вводе
left = 0x0002, // Прижать к левому концу поля
right = 0x0004, // Прижать к правому концу поля
internal = 0x0008, // Расположить по центру поля
dec = 0x0010, // Десятичная система счисления
oct = 0x0020, // Восьмеричная система счисления
hex = 0x0040, // Шестнадцатеричная система счисления
showbase = 0x0080, // Показать базу счисления
showpoint = 0x0100, // Отобразить десятичную точку
uppercase = 0x0200, // Печатать шестнадцатеричными буквами
showpos = 0x0400, // Печатать «+» перед положительными числами
scientific = 0x0800, // Для плавающих чисел использовать букву Е;
fixed = 0x1000, // Для плавающих чисел использовать точку 123.45
unitbuf = 0x2000, // Выгрузить все потоки после ввода
stdio = 0x4000 // Выгрузить потоки после вывода
inline long setf(long _f,long _m);
inline long setf(long _l);
inline long unsetf(long _l);
Любой флажок можно установить или сбросить с помощью перегружаемых функций setf() и unsetf(). Например, по умолчанию действует десятичная система счисления. Программист может изменить базу системы счисления на восьмеричную или шестнадцатеричную с помощью функции setf(). Эта функция перегружаемая с одним и двумя аргументами.
Первый аргумент задает конкретный бит, который нужно установить. Он может быть одним из флажков, заданных в перечислении. Чтобы включить сразу несколько флажков, их нужно связать побитовой операцией «или» (|).
Некоторые флажки не могут быть заданы одновременно. Например, нельзя одновременно использовать и восьмеричную, и шестнадцатеричную системы счисления. Если просто задать
то окажутся включенными оба флажка.
То же самое относится к форме выдачи плавающих чисел. Нельзя одновременно использовать и обыкновенную, и научную нотацию. Для таких случаев используется перегружаемая функция setf() с двумя аргументами. Здесь вторым аргументом задается группа флажков, которые необходимо сбросить перед тем, как выполнить установку битов, заданных первым аргументом (табл. 13.1). На месте второго аргумента может появляться одно из двух значений, которые тоже определены в классе ios.
Таблица 13.1 Аргументы функции setf()
Имя второго аргумента
Имя первого аргумента
Такие формы установки (табл. 13.1) гарантируют, что не окажутся одновременно установленными два флажка. Например, чтобы установить шестнадцатеричную систему счисления, нужно написать:
Эта функция вначале сбросит в нуль все биты, относящиеся к системе счисления, а затем установит нужный бит.
Точно так же после вызова функции setf():
числа с плавающей точкой будут печататься в научной нотации. По умолчанию любое значение печатается прижатым к правому концу поля. После установки флажка left значение будет печататься прижатым к левому концу поля. Это можно сделать следующим образом:
Остальные флажки можно установить функцией setf(), имеющей один аргумент. Функция setf() возвращает предыдущее состояние флажков форматизации в виде числа long. Если это состояние сохранить, то затем его легко можно восстановить. Например:
long old_stform = setf(ios::left, ios::adjustfield;
По умолчанию выдается столько символов, сколько необходимо для правильного представления значения, т.е.
число не будет дополняться слева или справа пробелами. Поэтому устанавливать флажок левого или правого конца поля при не установленной ширине поля выдачи не имеет смысла, так как ширина поля соответствует числу символов в числе, и значение одновременно прижато и к левому, и к правому концу. Но программист может сам задать ширину выводимого поля с помощью член-функции width(). Функция width () перегружаемая и имеет два прототипа:
Первый экземпляр устанавливает ширину печатного поля в переменной w и возвращает предыдущую ширину. Заметим, что если задать в функции width() недостаточное количество позиций, то никакого усечения происходить не будет, а будут печататься все цифры числа. Если ширина поля выдачи задана больше, чем необходимо для числа, то значение слева будет дополнено пробелами. Если при этом включен флажок левого конца поля, то число будет дополняться пробелами справа. Например:
int count1 = 89786, count2 = 7834;
int old_wd = cout.width(l0);
cout Срочно?
Закажи у профессионала, через форму заявки
8 (800) 100-77-13 с 7.00 до 22.00
Форматированный ввод-вывод в C++
В этом уроке мы вернемся к используемым ранее операторам cin и cout для рассмотрения их в организации форматированного ввода-вывода. Для управления вводом-выводом в C++
используются :
Флаги позволяют установить параметры ввода-вывода, которые будут действовать во всех последующих операторах ввода-вывода до тех пор, пока не будут отменены. Манипуляторы вставляются в операторы cin(cout) и устанавливают параметры текущего оператора ввода-вывода.
Использование флагов
Флаги позволяют включить или выключить один из параметров вывода на экран. Для установки флага вывода используется следующая конструкция языка C++:
cout.setf(ios::flag)
Для снятия флага конструкция:
cout.unsetf(ios::flag)
Здесь flag — имя конкретного флага.
Если при выводе необходимо установить несколько флагов, то можно воспользоваться арифметической операцией «или» (|). В этом случае конструкция языка C++ будет такой:
cout.setf(ios::flag1 | ios::flag2 | ios::flag3)
В данном случае flag1, flag2, flag3 — имена устанавливаемых флагов вывода. В таблице ниже приведены некоторые флаги форматного вывода с примерами их использования.
Флаг | Описание | Пример использования | Результат | ||||||||||||||||||||||
right | Выравнивание по правой границе | 1 true | |||||||||||||||||||||||
dec | Вывод величин в десятичной системе счисления (по умолчанию) | r=-25 | |||||||||||||||||||||||
oct | Вывод величин в восьмеричной системе счисления (для этого нужно снять флаг вывод в десятичной) | p=27 | |||||||||||||||||||||||
hex | Вывод величин в шестнадцатеричной системе счисления (для этого нужно снять флаг вывод в десятичной) | p=0x17 | |||||||||||||||||||||||
uppercase | Использовать прописные буквы в шестнадцатеричных цифрах | p=1.466730e+002 | |||||||||||||||||||||||
fixed | Фиксированная форма вывода вещественных чисел (по умолчанию) |
Манипулятор | Описание | Пример использования | Результат |
setw(n) | Определяет ширину поля вывода в n символов | r=253 | |
setprecision(n) | Определяет количество цифр (n-1) в дробной части числа | r=171 | |
oct | Вывод величин в восьмеричной системе счисления (для этого нужно снять флаг вывод в десятичной) | r=375 | |
hex | Вывод величин в шестнадцатеричной системе счисления (для этого нужно снять флаг вывод в десятичной) | p=FD | |
uppercase | Использовать прописные буквы в шестнадцатеричных цифрах | p=FD | |
nouppercase | Использовать строчные буквы в шестнадцатеричных цифрах | p=1.466730e+002 | |
fixed | Фиксированная форма вывода вещественных чисел (по умолчанию) |