next C++ |
Ссылки |
Улучшения языка C |
Классы |
Перегрузка функций и операций |
Шаблоны |
Наследование |
Исключительные ситуации |
Лабораторные работы |
Курсовая работа |
Вопросы к экзамену |
Метод | Назначение |
Управление форматированием | |
setf(flag) | установка негрупповых флагов форматирования |
setf(flag,group) | установка флага из группы |
unsetf(flag) | сброс негрупповых флагов |
fmtflags flags() | текущие флаги |
width(int) | установка минимальной ширины поля, после вывода значения ширина поля сбрасывается на 0 |
int width() | текущая ширина поля |
precision(int) | установка максимального количества десятичных знаков для вывода вещественных чисел по умолчанию – 6 |
int precision() | текущая точность |
fill(char) | установка символа заполнения по умолчанию – ' ' |
int fill() | текущий символ заполнения |
Проверка и установка состояния | |
bool good() | true, если ошибок не было |
bool eof() | true, если при выполнении последнего ввода был обнаружен конец файла |
bool fail() | true, если при выполнении последнего ввода была ошибка ввода-вывода |
clear() | очистить состояние ошибки для продолжения ввода |
clear(ios::failbit) | установить состояние ошибки |
Посимвольный ввод-вывод | |
put(char) | вывод символа |
write(char* buf, int n) | вывод n символов |
flush() | записать информацию из буфера на диск |
get(char&) int get() | ввод символа |
read(char* buf, int n) | ввод n символов |
int peek() | подсмотреть следующий символ, для конца файла возвращается EOF |
putback(char) | вернуть символ в поток |
Позиционирование в файле | |
pos_type tellg() | получить текущую позицию чтения |
seekg(pos_type) seekg(off_type,seek_dir) | установить позицию чтения |
pos_type tellp() | получить текущую позицию записи |
seekp(pos_type) seekp(off_type,seek_dir) | установить позицию записи |
Открытие и закрытие файлов (классы ifstream, ofstream, fstream) | |
open(char *name) open(char *name, mode) | открыть файл, где mode комбинируется из флагов in, out, app, ate, trunc, binary |
close() | закрыть файл |
Флаг | Значение |
Группа basefield – система счисления для целых чисел | |
dec | десятичная |
oct | восьмеричная |
hex | шестнадцатеричная |
Группа floatfield – формат представления для вещественных чисел | |
fixed | с фиксированной точкой |
scientific | в экспоненциальной форме |
Группа adjustfield – выравнивание в поле вывода | |
right | вправо |
left | влево |
internal | знак числа – слева, значение – справа |
Без группы | |
showbase | выводить 0x перед шестнадцатеричными и 0 перед восьмеричными числами |
showpoint | всегда выводить . и дробную часть |
uppercase | выводить шестнадцатеричные цифры и E в вещественных числах в верхнем регистре |
showpos | выводить знак числа для положительных чисел |
boolalpha | выводить значения bool как true и false |
skipws | игнорирование пробелов при вводе символов с помощью операции >> |
// вывод целого числа в шестнадцатеричном виде с ведущими нулями int x=123; cout.setf(ios::hex,ios::basefield); cout.setf(ios::uppercase); cout.width(8); cout.fill('0'); cout<<x<<"\n"; cout.fill(' '); // вывод вещественного числа в поле шириной 10 с 2 десятичными знаками double f=12.3; cout.setf(ios::fixed,ios::floatfield); cout.setf(ios::showpoint); cout.width(10); cout.precision(2); cout<<f<<"\n";
// вывод целого числа в шестнадцатеричном виде с ведущими нулями int x=123; printf("%08X\n",x); // вывод вещественного числа в поле шириной 10 с 2 десятичными знаками double f=12.3; printf("%10.2lf\n",f);
Манипулятор | Назначение |
setw(w) | установка ширины поля вывода |
setprecision(p) | установка количества десятичных знаков для вывода вещественных чисел |
setfill(c) | установка символа заполнения |
flush | записать информацию из буфера на диск |
endl | вывести переход на новую строку, а затем выполнить flush |
dec oct hex | выбор системы счисления для целых чисел |
right left internal | выравнивание в поле вывода |
fixed scientific | формат представления для вещественных чисел |
showbase noshowbase showpoint noshowpoint showpos noshowpos … | установка и сброс соответствующих флагов форматирования |
// вывод целого числа в шестнадцатеричном виде с ведущими нулями int x=123; cout<<hex<<uppercase<<setw(8)<<setfill('0')<<x<<setfill(' ')<<"\n"; // вывод вещественного числа в поле шириной 10 с 2 десятичными знаками double f=12.3; cout<<fixed<<showpoint<<setw(10)<<setprecision(2)<<f<<"\n";
// вывод целого числа в шестнадцатеричном виде с ведущими нулями int x=123; cout<<format("{:08X}\n",x); // вывод вещественного числа в поле шириной 10 с 2 десятичными знаками double f=12.3; cout<<format("{:10.2f}\n",f);