|
Программирование >> Инициализация объектов класса, структура
cout showpoint 10.0 Чтобы точка выводилась, воспользуйтесь манипулятором showpoint: << noshowpoint << \n; Манипулятор noshowpoint восстанавливает поведение по умолчанию. По умолчанию значения с плавающей точкой выводятся в нотации с фиксированной точкой. Для перехода на научную нотацию используется идентификатор scientific, а cout << научная: << scientific << 10.0 << с фиксированной точкой: << fixed для возврата к прежней нотации - модификатор fixed: << 10.0 << \n; В результате печатается: научная: 1.0e+01 с фиксированной точкой: 10 Если бы мы захотели вместо буквы e выводить E , то следовало бы употребить манипулятор uppercase, а для возврата к e - nouppercase. (Манипулятор uppercase не приводит к переводу букв в верхний регистр при печати.) По умолчанию перегруженные операторы ввода пропускают пустые символы (пробелы, знаки табуляции, новой строки и возврата каретки). Если дана последовательность: то цикл обрезаются. Таким образом, при точности 4 значение 3.14159 печатается как 3.142, а при точности 3 - как 3.14. По умолчанию десятичная точка не печатается, если дробная часть значения равна 0. Например: cout << 10.00 выводит i10 I char ch; while ( cin >> ch ) ... читает все буквы от a до d за четыре итерации, а пробельные разделители оператором ввода игнорируются. Манипулятор noskipws отменяет такой пропуск пробельных char ch; cin >> noskipws; while ( cin >> ch ) ... символов: cin >> skipws; Теперь цикл while будет выполняться семь раз. Чтобы восстановить поведение по умолчанию, к потоку cin применяется манипулятор skipws. Когда мы пишем: cout << пожалуйста, введите значение: ; то в буфере потока cout сохраняется литеральная строка. Есть ряд условий, при которых буфер сбрасывается (т.е. опустошается), - в нашем случае в стандартный вывод: буфер может заполниться. Тогда перед чтением следующего значения его необходимо сбросить; буфер можно сбросить явно с помощью любого из манипуляторов flush, ends сбрасает буфер cout << hi! << flush; вставляет нулевой символ, затем сбрасает буфер char ch[2]; ch[0] = a; ch[1] = b; cout << ch << ends; вставляет символ новой строки, затем сбрасает буфер или endl: cout << hi! << endl; при установлении внутренней переменной состояния потока unitbuf буфер сбрасывается после каждой операции вывода; объект ostream может быть связан (tied) с объектом istream. Тогда буфер ostream сбрасывается каждый раз, когда istream читает из входного потока. cout всегда связан с cin: cin.tie ( &cout ); Инструкция cin >> ival; istream is; ostream new os; ... tie() возвращает существщую свя ostream *old tie = is.tie(); is.tie( 0 ); разорвать существующую is.tie( &new os ); установить нов ( ... is.tie( 0 ); разорвать существщую связь значение 0: is.tie( old tie ); восстановить прежнюю связь Мы можем управлять шириной поля, отведенного для печати числового или строкового связь связь #include <iostream> #include <iomanip> int main() { int ival = 16; double dval = 3.14159; cout << ival: << setw(12) << ival << \n << dval: << setw(12) << dval << \n; значения, с помощью манипулятора setw() . Например, программа печатает: ival: 16 dval: 3.14159 Второй модификатор setw() необходим потому, что, в отличие от других манипуляторов, setw() не изменяет состояние формата объекта ostream. Чтобы выровнять значение по левой границе, мы применяем манипулятор left (соответственно манипулятор right восстанавливает выравнивание по правой границе). Если мы хотим получить такой результат: приводит к сбросу буфера cout. В любой момент времени объект ostream разрешено связывать только с одним объектом istream. Чтобы разорвать существующую связь, мы передаем функции-члену tie()
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |