showflags(f);
cout.unsetf(ios:scientific);
f = cout.flags();
showflags(f);
return 0;
}
void showflags(ios::fmtflags f)
{
long i;
for(i=0x4000; i; i=i>>1)
if(i & f) cout << "1";
else cout << "0";
cout << "\n";
}
При выполнении эта программа отображает такие результаты. (Между этими и вашими результатами возможно расхождение, вызванное использованием различных компиляторов.)
0 0 0 0 0 1 0 0 0 0 0 0 0 0 1
0 0 1 0 0 1 0 0 0 1 0 0 0 0 1
0 0 0 0 0 1 0 0 0 1 0 0 0 0 1
В предыдущей программе обратите внимание на то, что тип
Помимо флагов форматирования можно также устанавливать ширину поля, символ заполнения и количество цифр после десятичной точки (точность). Для этого достаточно использовать следующие функции.
streamsize width(streamsize len);
char fill(char ch);
streamsize precision(streamsize num);
Функция
Рассмотрим программу, которая демонстрирует использование этих трех функций.
#include
using namespace std;
int main()
{
cout.setf(ios::showpos);
cout.setf(ios::scientific);
cout << 123 << " " << 123.23 << "\n";
cout.precision(2); // Две цифры после десятичной точки.
cout.width(10); // Всё поле состоит из 10 символов.
cout << 123 << " ";
cout.width(10); // Установка ширины поля равной 10.
cout << 123.23 << "\n";
cout.fill('#'); // Для заполнителя возьмем символ "#"
cout.width(10); // и установим ширину поля равной 10.
cout << 123 << " ";
cout.width(10); // Установка ширины поля равной 10.
cout << 123.23;
return 0;
}
Эта программа генерирует такие результаты.
+123 +1.232300е+002
+123 +1.23е+002
######+123 +1.23е+002
В некоторых реализациях необходимо устанавливать значение ширины поля перед выполнением каждой операции вывода. Поэтому функция
В системе ввода-вывода C++ определены и перегруженные версии функций
char fill();
streamsize width();
streamsize precision();
В С++-системе ввода-вывода предусмотрен и второй способ изменения параметров форматирования, связанных с потоком. Он реализуется с помощью специальных функций, называемых
При использовании манипуляторов, которые принимают аргументы, необходимо включить в программу заголовок
Манипулятор используется как часть выражения ввода-вывода. Вот пример программы, в которой показано, как с помощью манипуляторов можно управлять форматированием выводимых данных.
#include