Типы данных в языке C++__________________________________703

cision или метод precision. Вызов любой из этих установок точности действует для
всех последующих операций вывода до тех пор, пока не будет произведена следую-
щая установка точности.

Чтобы посмотреть возможности способов управления точностью, вы можете
записать оператор:

for(int i = 0; i < 10; i++)

outfile « setprecision(i) « sqrt(S.O) « endl;

Этот оператор изменяет в цикле параметр манипулятора setprecision от 0 до 9
и тем самым изменяет точность вывода в файл значения корня квадратного из 3.
Значение параметра 0 приводит к установке точности по умолчанию, которая рав-
на 6. Результат работы приведенного оператора следующий:

1.73205
2

1.7

1.73

1.732

1.7321

1.73205

1.732051

1.7320508

1.73205081

Аналогичный результат даст следующий код, использующий метод precision:

for(int i=0; i < 10; i++)
(

outfile.precision(i);

outfile « sqrt(3.0) « endl;

}•

Если в функции precision не задавать параметров, например,

int i = outfile.precision();

то она вернет текущую установку точности.

Манипулятор потока setw и метод width устанавливают ширину поля (т.е.
число символьных позиций, в которые значение будет выведено, или число симво-
лов, которые будут введены) и возвращает предыдущую ширину поля. Если обраба-
тываемые значения имеют меньше символов, чем заданная ширина поля, то для за-
полнения лишних позиций используются заполняющие символы. По умолчанию
заполняющими символами являются пробелы и вставляются они перед значащи-
ми символами, т.е. происходит выравнивание вправо. Если число символов в обра-
батываемом значении больше, чем заданная ширина поля, то лишние символы не
отсекаются и число будет напечатано полностью. Установка ширины поля влияет
только на следующую операцию поместить в поток; затем ширина поля устанавли-
вается неявным образом на 0, т.е. поле для представления выходных значений бу-
дут просто такой ширины, которая необходима. Функция width, не имеющая аргу-
ментов, возвращает текущую установку ширины поля.

Заполняющие символы могут устанавливаться манипулятором setfill(char)
или методом fill.

Например, следующие операторы демонстрируют влияние ширины поля на
результат вывода числа 25:

int j =25;

for(int i = 0; i < 5; i++)

outfile « setw(i) « j « endl;