HTML [44] |
Visual C++ и MFC [21] |
c++ [78] |
php [19] |
Javascript [15] |
C# [51] |
загрузки [0] |
XNA
[10]
создание игр с помощью xna
|
Главная » Статьи » c++ |
Чтобы, например, указать ширину полей, левое или правое выравнивание и т.д. можно использовать printf(), а можно сделать то же самое при помощи средств форматирования ввода/вывода языка С++. Существуют два способа форматирования ввода/вывода, которые мы по очереди рассмотрим в данной главе. Первый способ предусматривает использование функций для установки определенных флагов форматирования, которые перечислены в классе ios_base enum { 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, unitbuf = 0x2000, stdio = 0x4000 }; Рассмотрим что делают перечисленные выше флаги.
Что делают флаги мы рассмотрели. Теперь необходимо познакомиться с функциями, которые устанавливают и сбрасывают эти флаги. Первая функция, которую мы рассмотрим, - это функция setf(), используемая для установки флагов long setf(long flags); Функция принимает в качестве параметра рассмотренные выше флаг или флаги, соединенные между собой при помощи побитового ИЛИ. Она возвращает предыдущее значение флага. Рассмотрим пример: cout.setf(ios::hex); cout.setf(ios::showpos); cout<<123<<" "<<123.45<<"\n"; cout<<67<<" "<<678.9<<"\n"; выведет на экран 7b +123.45 43 +678.9 тоже самое будет на экране после выполнения следующего кода cout.setf(ios::hex | ios::showpos); cout<<123<<" "<<123.45<<"\n"; cout<<67<<" "<<678.9<<"\n"; Для отключения установленных флагов нужно использовать функцию unsetf(). Она имеет следующий прототип: long unsetf(long flags); Функция возвращает значение предыдущей установки флага и сбрасывает флаги, определяемые параметром flags. Пример: cout.setf(ios::showpos | ios::hex); cout<<123<<" "<<123.45<<"\n"; cout.unsetf(ios::showpos | ios::hex); cout<<123<<" "<<123.45<<"\n"; выведет на экран 7b +123.45 123 123.45 Кроме флага форматирования также можно установить ширину поля потока, символ для заполнения и число цифр после десятичной запятой. Для этого используются следующие функции: int width(int len); char fill(char ch); int precision(int num); Функция width() устанавливает ширину поля и возвращает текущую ширину. Вторая функция - fill() устанавливает текущий символ заполнения и возвращает предыдущий символ заполнения. По умолчанию используется пробел. А функция precision устанавливает точность чисел с плавающей точкой. В научном режиме эта функция определяет количество цифр после десятичной запятой. В обычной нотации функция обозначает количество выводимых цифр. Точность, установленная по умолчанию, равна 6. Функция width() воздействует только на один вывод информации, а после этого в действие вступают параметры принятые по умолчанию. В случае с остальными двумя функциями новые установки остаются действовать до их явного обновления. Приведем пример: cout.width(10); cout.fill('*'); cout<<123<<"\n"; cout.width(10); cout<<456<<"\n\n"; cout<<"Using precision\n"; float price1 = 20.405f; float price2 = (float)1.9+8.0/9.0; cout<<price1<<"\n"<<price2<<"\n\n"; cout.precision(2); cout<<price1<<"\n"<<price2<<"\n\n"; cout.setf(ios::scientific); cout<<price1<<"\n"<<price2<<"\n\n"; выведет на экран *******123 *******456 Using precision 20.405 2.78889 20 2.8 2.04e+001 2.79e+000 А теперь мы переходим к рассмотрению второго способа форматирования ввода/вывода. Второй способ - это использование манипуляторов. Манипуляторы являются специальными функциями, которые позволяют изменять флаги потока. Существуют манипуляторы с параметрами и без. Если Вы используете манипуляторы с параметрами, подключите файл iomanip.h Рассмотрим манипуляторы без параметров:
Манипуляторы с параметрами
Использование манипуляторов рассмотрим на примере cout<<setw(5)<<setfill('*')<<22<<endl; cout<<hex<<11<<endl; выведет на экран ***22 b | |||||||||||||||||||||||||||||||||||||||||||||||||||||
Просмотров: 6796 | Рейтинг: 0.0/0 |
Всего комментариев: 0 | |