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

long ios::flags(long) – присваивает новые значения флагам и возвращает старые.

long ios::setf(long, long) – перед установкой некоторых флагов позволяет сбросить флаги, которые не могут быть установлены одновременно с ними.

Вкачестве первого параметра передается устанавливаемый флаг.

Вкачестве второго параметра передается одна из следующих статических констант класса ios:

adjustfield (left | right | internal)

basefield (dec | oct | hex) floatfield (scientific | fixed)

long ios::setf(long) – устанавливает флаги формата, заданные в качестве аргумента и возвращает предыдущие установки этих флагов.

long ios::unsetf(long) – сбрасывает указанные флаги формата и возвращает предыдущие их значения.

Манипуляторами с параметрами для работы с флагами:

setiosflags(long) – устанавливает флаги формата, указанные в аргументе.

resetiosflags(long) – сбрасывает флаги формата, указанные в аргументе.

Пример. Работа с флагами

#include <iostream> #include <iomanip>

using namespace std; int main() {

cout.setf(ios::showpoint);

cout<<9.0000<<endl;

cout<<9.9000<<endl;

cout<<9.9900<<endl;

cout.unsetf(ios::showpoint);

cout<<9.0000<<endl;

cout<<9.9000<<endl;

cout<<9.9900<<endl;

cout.setf(ios::hex, ios::basefield); int x=12345;

cout<<x;

cout.unsetf(ios::hex); cout<<endl<<setw(30)<<setiosflags(ios::left)<<x;

cout<<resetiosflags(ios::left); cout.flags(ios:: showpos | ios::internal);

cout<<setw(10)<<setfill(‘0')<<x<<endl;

cout.flags(ios::left);

cout<<setw(10)<<setfill('%')<<x<<endl;

cout.setf(ios::showbase);

cout<<oct<<x<<endl;

cout<<hex<<x<<endlё;

cout<<dec<<x<<endl;

double y=9000, z=0.0009; cout.unsetf(ios::showpos); cout.setf(ios::scientific | ios::uppercase);

cout<<y<<" "<<z<<endl; cout.unsetf(ios::uppercase);

cout<<y<<" "<<z<<endl;

cout.setf(ios::fixed, ios::floatfield); cout<<y<<" "<<z<<endl;

cout.setf(ios::hex,ios::basefield);

cout.setf(ios::uppercase);

cout<<x<<endl; return 0;

}

Состояние ошибок потока

Состояние ошибок потока можно проверить с помощью битов класса ios.

Совокупность этих битов определена в поле state класса ios.

enum io_state { goodbit = 0x00, eofbit = 0x01, failbit = 0x02, badbit = 0x04

};

Состоянием потока можно управлять с помощью методов и операций.

Бит eofbit автоматически устанавливается, когда встречается признак конца файла.

Для проверки состояния этого бита можно использовать метод int ios::eof(), который

возвращает true, если встретился признак конца файла.

Бит failbit устанавливается для потока, если в потоке происходит ошибка форматирования, но символы не утеряны.

Проверяет это бит метод int ios::fail(), который

возвращает ненулевое значение, если бит failbit установлен.

Бит badbit устанавливается для потока при возникновении ошибки, которая приводит к потере данных.

Проверяют этот бит методы int ios::fail() и int ios::fail() класса ios.

Если бит badbit установлен, эти функции возвращают ненулевое значение.

Бит goodbit устанавливается, если нет ошибок в потоке.

Проверяет этот бит метод int ios::good(), который в случае отсутствия ошибок возвращает истину.

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