Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OOP / lectures / 4_oop.ppt
Скачиваний:
85
Добавлен:
03.03.2016
Размер:
726.53 Кб
Скачать

Если число символов в обрабатываемом значении больше, чем заданная ширина поля, то лишние символы не отсекаются.

Установка ширины поля применяется только к текущей операции «поместить в поток» или «взять из потока».

После выполнения этой операции ширина поля устанавливается неявным образом на 0.

Такая установка означает, что поле для представления выходных данных будет необходимой ширины.

Метод width имеет две реализации:

1)int ios::width() – возвращает значение ширины поля ввода/вывода;

2)int ios::width(int) – возвращает значение ширины поля ввода/вывода, возвращает старое значение ширины.

Пример. Работа с шириной поля

#include <iostream> #include <iomanip>

using namespace std; int main() {

char str[256];

cin.width(15);

cin>>str; cout.width(10);

cout<<str;

cout<<endl;

//fflush(stdin); cin.width(5);

cin>>str; cout<<setw(10)<<str<<endl;

return 0;

}

Примечание. Если при первом вводе строки количество символов превысило установленное в width (15), то при втором вводе происходит извлечение оставшихся символов из буфера.

Если необходимо, чтобы пользователь вводил данные два раза, то выполняется очистка буфера клавиатуры (fflush(stdin)).

Манипуляторы, определяющие вид

вводимых–выводимых значений

ws – извлечение пробельных символов.

endl – вставка символа новой строки и очистка потока.

ends – вставка конечного пустого символа в строку.

flush – сброс на диск и очистка ostream.

setfill(int c) – установка символа-заполнителя.

Пример. Работа с символом-заполнителем

#include <iostream> #include <iomanip>

using namespace std; int main() {

char str[256]; cin.width(5);

cin>>str; cout<<setfill('#')<<setw(10)<<str;

return 0;

}

Методы класса ios, работающие с символами заполнения:

char ios::fill() – возвращает текущий символ заполнения.

char ios::fill(char) – устанавливает значение текущего символа заполнения; возвращает значение старого.

Пример.

Создание

собственных

манипуляторов потока

 

#include <iostream> using namespace std;

ostream & tab(ostream &output){ return output<<'\t';

}

int main() { char str[256];

cin.width(5); cin>>str; cout<<tab<<tab<<str<<endl; return 0;

}

Флаги состояний формата

Флаги формата (format flags) задают виды форматирования, которые выполняются во время операций ввода–вывода.

Флаг

Описание

ios::skipws

Удаляются из введенного данного

 

первые пробельные символы

ios::left

Выводимые данные

 

выравниваются по левому краю

ios::right

Выводимые данные

 

выравниваются по правому краю

ios::internal

Вставка пробелов между цифрами

 

и знаками числа

Флаг

Описание

 

ios::dec,

Вывод чисел в 10 с.с, 8 с.с. и 16

ios::oct,

с.с. соответственно

ios::hex

 

 

ios::showbase

При выводе числа показывается

 

признак системы счисления

ios::showpoint

Определяет, что вещественные

 

числа должны

выводиться с

 

десятичной точкой.

ios::uppercase

Предписывает

использовать

 

прописные буквы в числах в 16

 

с.с. и экспоненциальной форме

 

вещественных чисел.

Флаг

Описание

ios::showpos

Определяет, что числа должны

 

выводиться со знаком (+, -)

ios::scientific

Определяет вывод

 

вещественных чисел в

 

экспоненциальном формате

ios::fixed

Определяет вывод

 

вещественных чисел в форме с

 

фиксированной точкой

Методы класса ios для работы с флагами

long ios::flags() – возвращает текущие флаги. ё

Соседние файлы в папке lectures