Класс basic_ios

Шаблон класса описывает функции хранилища и члена, общие для входных потоков (шаблона basic_istreamкласса) и выходных потоков (шаблона basic_ostreamкласса), которые зависят от параметров шаблона шаблона. (Класс ios_base описывает, что является общим и не зависит от параметров шаблона.) Объект класса basic_ios<class Elem, class Traits> помогает управлять потоком с элементами типа Elem, признаки символов которых определяются классом Traits.

Синтаксис

template <class Elem, class Traits>
class basic_ios : public ios_base

Параметры

Elem
Тип символа.

Traits
Тип, предоставляющий сведения о типе символа, по умолчанию используется char_traits < Elem >.

Замечания

Объект класса basic_ios<class Elem, class Traits> хранит:

Дополнительные сведения см. в разделах basic_istream и basic_streambuf.

Конструкторы

Конструктор Description
basic_ios Создает класс basic_ios.

Определения типов

Введите имя Description
char_type Синоним параметра шаблона Elem.
int_type Синоним для Traits::int_type.
off_type Синоним для Traits::off_type.
pos_type Синоним для Traits::pos_type.
traits_type Синоним параметра шаблона Traits.

Функции элементов

Функция-член Description
bad Сообщает о потере целостности буфера потока.
clear Очищает все флаги ошибок.
copyfmt Копирует флаги из одного потока в другой.
eof Указывает, достигнут ли конец потока.
exceptions Указывает, какие исключения будут создаваться потоком.
fail Сообщает об ошибке при извлечении допустимого поля из потока.
fill Указывает или возвращает символ, который будет использоваться, если текст не так широк, как поток.
good Указывает, что поток находится в хорошем состоянии.
imbue Изменяет языковой стандарт.
init Вызывается конструкторами basic_ios.
move Перемещает все значения, кроме указателя на буфер потока, из параметра в текущий объект.
narrow Находит эквивалентный char для данного char_type.
rdbuf Направляет поток в указанный буфер.
rdstate Считывает состояние битов для флагов.
set_rdbuf Назначает буфер потока буфером чтения для этого объекта потока.
setstate Устанавливает дополнительные флаги.
swap Меняет местами значения в этом объекте basic_ios и значения другого объекта basic_ios. Указатели на буферы потока не переключились.
tie Гарантирует, что один поток обрабатывается до другого потока.
widen Находит эквивалент char_type для указанного char.

Операторы

Operator Description
explicit operator bool Позволяет использовать объект basic_ios как bool. Автоматическое преобразование типов отключено для предотвращения распространенных непредвиденных побочных эффектов.
operator void * Указывает, находится ли поток по-прежнему в хорошем состоянии.
operator! Указывает, не является ли поток плохим.

Требования

Заголовок.<ios>

Пространство именstd:

basic_ios::bad

Сообщает о потере целостности буфера потока.

bool bad() const;

Возвращаемое значение

Значение true, если rdstate & badbit не равно нулю; в противном случае — значение false.

Дополнительные сведения о методе badbit см. в разделе ios_base::iostate.

Пример

// basic_ios_bad.cpp
// compile with: /EHsc
#include <iostream>

int main( void )
{
    using namespace std;
    bool b = cout.bad( );
    cout << boolalpha;
    cout << b << endl;

    b = cout.good( );
    cout << b << endl;
}

basic_ios::basic_ios

Создает класс basic_ios.

explicit basic_ios(basic_streambuf<Elem,  Traits>* sb);
basic_ios();

Параметры

sb
Стандартный буфер для хранения элементов ввода или вывода.

Замечания

Первый конструктор инициализирует объекты-члены путем вызова init(_ Sb). Второй (защищенный) конструктор оставляет свои объекты-члены не инициализированными. Последующий вызов init должен инициализировать объект, прежде чем его можно будет безопасно уничтожить.

basic_ios::char_type

Синоним параметра шаблона Elem.

typedef Elem char_type;

basic_ios::clear

Очищает все флаги ошибок.

void clear(iostate state = goodbit, bool reraise = false);
void clear(io_state state);

Параметры

state
(Необязательно) Флаги, которые необходимо задать после очистки всех флагов. По умолчанию — goodbit.

reraise
(Необязательно) Указывает, следует ли повторно создавать исключение. Значение false по умолчанию (не будет повторно вызывать исключение).

Замечания

Флаги: goodbit, failbiteofbitи badbit. Проверка для этих флагов с помощью good, badи eoffail

Функция-член заменяет сохраненную информацию о состоянии потока на следующее:

state | (rdbuf != 0 goodbit : badbit)

Если state&exceptions это ненулевое значение, он создает объект класса failure.

Дополнительные сведения см. в разделах rdbuf и exceptions.

Пример

См rdstate . примеры getline использования clear.

basic_ios::copyfmt

Копирует флаги из одного потока в другой.

basic_ios<Elem, Traits>& copyfmt(
const basic_ios<Elem, Traits>& right);

Параметры

right
Поток, флаги которого требуется скопировать.

Возвращаемое значение

Объект this для потока, в который копируется флаги.

Замечания

Функция-член сообщает событие erase_eventобратного вызова. Затем он копируется из right*this символа заливки, указателя галстука и сведений о форматировании. Перед изменением маски исключения он сообщает о событии copyfmt_eventобратного вызова. Если после завершения копирования ненулевое значение, state&exceptions функция фактически вызывает clear аргумент rdstate. Он возвращает *this.

Пример

// basic_ios_copyfmt.cpp
// compile with: /EHsc
#include <iostream>
#include <fstream>

int main( )
{
    using namespace std;
    ofstream x( "test.txt" );
    int i = 10;

    x << showpos;
    cout << i << endl;
    cout.copyfmt( x );
    cout << i << endl;
}

basic_ios::eof

Указывает, достигнут ли конец потока.

bool eof() const;

Возвращаемое значение

Значение true достигло конца потока; в противном случае — значение false.

Замечания

Функция-член возвращается true , если rdstate& eofbit ненулевое значение. Дополнительные сведения о методе eofbit см. в разделе ios_base::iostate.

Пример

// basic_ios_eof.cpp
// compile with: /EHsc
#include <iostream>
#include <fstream>

using namespace std;

int main( int argc, char* argv[] )
{
    fstream   fs;
    int n = 1;
    fs.open( "basic_ios_eof.txt" );   // an empty file
    cout << boolalpha
    cout << fs.eof() << endl;
    fs >> n;   // Read the char in the file
    cout << fs.eof() << endl;
}

basic_ios::exceptions

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

iostate exceptions() const;
void exceptions(iostate Newexcept);
void exceptions(io_state Newexcept);

Параметры

Newexcept
Флаги, которые должны вызывать исключение.

Возвращаемое значение

Флаги, которые в настоящее время указываются для создания исключения для потока.

Замечания

Первая функция-член возвращает сохраненную маску исключения. Вторая функция-член хранится _Except в маске исключения и возвращает предыдущее сохраненное значение. Сохранение новой маски исключений может вызывать исключение так же, как вызов clear( rdstate ).

Пример

// basic_ios_exceptions.cpp
// compile with: /EHsc /GR
#include <iostream>

int main( )
{
    using namespace std;

    cout << cout.exceptions( ) << endl;
    cout.exceptions( ios::eofbit );
    cout << cout.exceptions( ) << endl;
    try
    {
        cout.clear( ios::eofbit );   // Force eofbit on
    }
    catch ( exception &e )
    {
        cout.clear( );
        cout << "Caught the exception." << endl;
        cout << "Exception class: " << typeid(e).name()  << endl;
        cout << "Exception description: " << e.what() << endl;
    }
}
0
1
Caught the exception.
Exception class: class std::ios_base::failure
Exception description: ios_base::eofbit set

basic_ios::fail

Сообщает об ошибке при извлечении допустимого поля из потока.

bool fail() const;

Возвращаемое значение

true Значение rdstate & (badbit|failbit) if is nonzero, в противном случае false.

Дополнительные сведения о методе failbit см. в разделе ios_base::iostate.

Пример

// basic_ios_fail.cpp
// compile with: /EHsc
#include <iostream>

int main( void )
{
    using namespace std;
    bool b = cout.fail( );
    cout << boolalpha;
    cout << b << endl;
}

basic_ios::fill

Указывает или возвращает символ, который будет использоваться, если текст не так широк, как поток.

char_type fill() const;
char_type fill(char_type Char);

Параметры

Char
Символ, который нужно использовать в качестве символа заливки.

Возвращаемое значение

Текущий символ заливки.

Замечания

Первая функция-член возвращает сохраненный символ заливки. Вторая функция-член сохраняет Char в символе заливки и возвращает его ранее сохраненное значение.

Пример

// basic_ios_fill.cpp
// compile with: /EHsc
#include <iostream>
#include <iomanip>

int main( )
{
    using namespace std;

    cout << setw( 5 ) << 'a' << endl;
    cout.fill( 'x' );
    cout << setw( 5 ) << 'a' << endl;
    cout << cout.fill( ) << endl;
}
a
xxxxa
x

basic_ios::good

Указывает, что поток находится в хорошем состоянии.

bool good() const;

Возвращаемое значение

true Значение if rdstate == goodbit (флаги состояния не заданы), в противном случае false.

Дополнительные сведения о методе goodbit см. в разделе ios_base::iostate.

Пример

См. basic_ios::bad с примером использования good.

basic_ios::imbue

Изменяет языковой стандарт.

locale imbue(const locale& Loc);

Параметры

Loc
Строка языкового стандарта.

Возвращаемое значение

Предыдущий языковой стандарт.

Замечания

Если rdbuf указатель не NULL является указателем, вызов функции-член

rdbuf-> pubimbue(_ Loc)

В любом случае она возвращает ios_base::imbue(_ Loc).

Дополнительные сведения см. в разделах pubimbue и ios_base::imbue.

Пример

// basic_ios_imbue.cpp
// compile with: /EHsc
#include <iostream>
#include <locale>

int main( )
{
    using namespace std;

    cout.imbue( locale( "french_france" ) );
    double x = 1234567.123456;
    cout << x << endl;
}

basic_ios::init

Вызывается конструкторами basic_ios.

void init(basic_streambuf<Elem,Traits>* _Sb, bool _Isstd = false);

Параметры

_Sb
Стандартный буфер для хранения элементов ввода или вывода.

_Isstd
Указывает, является ли этот поток стандартным.

Замечания

Функция-член сохраняет значения во всех объектах-членах, так что:

  • rdbuf возвращает _Sb.

  • tieNULL возвращает указатель.

  • rdstate возвращает значение goodbit , если _Sb ненулевое значение; в противном случае возвращается badbit.

  • exceptions возвращает goodbit.

  • flags возвращает skipws | dec. Дополнительные сведения см. в разделах skipws и dec.

  • width возвращает значение 0.

  • precision возвращает 6.

  • fill возвращает символ пробела.

  • getloc возвращает locale::classic.

  • iword возвращает ноль и pword возвращает NULL указатель для всех значений аргументов.

basic_ios::int_type

Синоним для traits_type::int_type.

typedef typename traits_type::int_type int_type;

basic_ios::move

Перемещает все значения, кроме указателя на буфер потока, из параметра в текущий объект.

void move(basic_ios&& right);

Параметры

right
Объект ios_base, из которого будут перемещаться значения.

Замечания

Защищенная функция-член перемещает все значения, хранящиеся в right*thisright, за исключением хранимогоstream buffer pointer, который не изменяется и установлен на NULL указатель.*this Хранящийся tie pointer объект имеет NULL указатель right.

basic_ios::narrow

Находит эквивалентный char для данного char_type.

char narrow(char_type Char, char Default = '\0') const;

Параметры

Char
Объект char для преобразования.

Default
char, который должен возвращаться, если эквивалент не будет найден.

Возвращаемое значение

Эквивалент char для указанного char_type.

Замечания

Функция-член возвращает значение use_facet<ctype<E>>(getloc()).narrow(Char, Default).

Дополнительные сведения см. в разделах use_facet и getloc.

Пример

// basic_ios_narrow.cpp
// compile with: /EHsc
#include <ios>
#include <iostream>
#include <wchar.h>

int main( )
{
    using namespace std;
    wchar_t *x = L"test";
    char y[10];
    cout << x[0] << endl;
    wcout << x << endl;
    y[0] = wcout.narrow( x[0] );
    cout << y[0] << endl;
}

basic_ios::off_type

Синоним для traits_type::off_type.

typedef typename traits_type::off_type off_type;

basic_ios::operator void *

Указывает, находится ли поток по-прежнему в хорошем состоянии.

operator void *() const;

Возвращаемое значение

Оператор возвращает NULL указатель только в том случае fail.

Пример

// basic_ios_opgood.cpp
// compile with: /EHsc
#include <iostream>

int main( )
{
    using namespace std;
    cout << (bool)(&cout != 0) << endl;   // Stream is still good
}
1

basic_ios::operator!

Указывает, не является ли поток плохим.

bool operator!() const;

Возвращаемое значение

Возвращает то же, что и вызов basic_ios::fail

Пример

// basic_ios_opbad.cpp
// compile with: /EHsc
#include <iostream>

int main( )
{
    using namespace std;
    cout << !cout << endl;   // Stream is not bad
}
0

basic_ios::operator bool

Позволяет использовать объект basic_ios как bool. Автоматическое преобразование типов отключено для предотвращения распространенных непредвиденных побочных эффектов.

explicit operator bool() const;

Замечания

Возвращает, true если поток не имеет ошибок; в противном случае false.

basic_ios::pos_type

Синоним для traits_type::pos_type.

typedef typename traits_type::pos_type pos_type;

basic_ios::rdbuf

Направляет поток в указанный буфер.

basic_streambuf<Elem, Traits> *rdbuf() const;
basic_streambuf<Elem, Traits> *rdbuf(
basic_streambuf<Elem, Traits>* _Sb);

Параметры

_Sb
Поток.

Замечания

Первая функция-член возвращает сохраненный указатель буфера потока.

Вторая функция-член сохраняет _Sb в сохраненном указателе буфера потока и возвращает ранее сохраненное в нем значение.

Пример

// basic_ios_rdbuf.cpp
// compile with: /EHsc
#include <ios>
#include <iostream>
#include <fstream>

int main( )
{
    using namespace std;
    ofstream file( "rdbuf.txt" );
    streambuf *x = cout.rdbuf( file.rdbuf( ) );
    cout << "test" << endl;   // Goes to file
    cout.rdbuf(x);
    cout << "test2" << endl;
}
test2

basic_ios::rdstate

Считывает состояние ошибки потока.

iostate rdstate() const;

Возвращаемое значение

Сведения о состоянии сохраненного потока.

Пример

// basic_ios_rdstate.cpp
// compile with: /EHsc
#include <iostream>
#include <fstream>
using namespace std;

void TestFlags( ios& x )
{
    cout << ( x.rdstate( ) & ios::badbit ) << endl;
    cout << ( x.rdstate( ) & ios::failbit ) << endl;
    cout << ( x.rdstate( ) & ios::eofbit ) << endl;
    cout << endl;
}

int main( )
{
    fstream x( "c:\test.txt", ios::out );
    x.clear( );
    TestFlags( x );
    x.clear( ios::badbit | ios::failbit | ios::eofbit );
    TestFlags( x );
}
0
0
0

4
2
1

basic_ios::setstate

Задает указанные флаги ошибок потока (в настоящее время установленные флаги состояния ошибки потока остаются неизменными):

flag) Description
goodbit Без ошибок
badbit Неустранимая ошибка
failbit Сбой операции ввода-вывода, например ошибка форматирования или извлечения
eofbit Поток достиг конца файла
void setstate(iostate _State);

Параметры

_State
Дополнительные флаги для установки.

Замечания

Функция-член по существу вызывает clear(_ state | rdstate).

Дополнительные сведения см. в разделах clear и rdstate.

Пример

// basic_ios_setstate.cpp
// compile with: /EHsc
#include <ios>
#include <iostream>
using namespace std;

int main( )
{
    bool b = cout.bad( );
    cout << b << endl;   // Good
    cout.clear( ios::badbit );
    b = cout.bad( );
    // cout.clear( );
    cout << b << endl;   // Is bad, good
    b = cout.fail( );
    cout << b << endl;   // Not failed
    cout.setstate( ios::failbit );
    b = cout.fail( );
    cout.clear( );
    cout << b << endl;   // Is failed, good
    return 0;
}
0
1

basic_ios::set_rdbuf

Назначает буфер потока буфером чтения для этого объекта потока.

void set_rdbuf(
basic_streambuf<Elem, Tr>* strbuf)

Параметры

strbuf
Буфер потока, который должен стать буфером чтения.

Замечания

Защищенная функция-член хранится strbuf в указателе буфера потока. Он не вызывает clear.

basic_ios::tie

Гарантирует, что один поток обрабатывается до другого потока.

basic_ostream<Elem, Traits> *tie() const;
basic_ostream<Elem, Traits> *tie(
basic_ostream<Elem, Traits>* str);

Параметры

str
Поток.

Возвращаемое значение

Первая функция-член возвращает сохраненный указатель tie. Вторая функция-член сохраняет str в указателе tie и возвращает его ранее сохраненное значение.

Замечания

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

Пример

В следующем примере, привязав cincoutего к, гарантируется, что Enter a number: строка перейдет в консоль, прежде чем сам номер извлекается из cin. Это исключает возможность того, что строка "Ввод числа:" по-прежнему сидит в буфере, когда число считывается, чтобы мы уверены, что пользователь фактически имеет некоторое предложение ответить. По умолчанию cin и cout привязаны.

#include <ios>
#include <iostream>

int main( )
{
    using namespace std;
    int i;
    cin.tie( &cout );
    cout << "Enter a number:";
    cin >> i;
}

basic_ios::traits_type

Синоним параметра шаблона Traits.

typedef Traits traits_type;

basic_ios::widen

Находит эквивалент char_type для указанного char.

char_type widen(char Char) const;

Параметры

Char
Символ для преобразования.

Возвращаемое значение

Находит эквивалент char_type для указанного char.

Замечания

Функция-член возвращает значение use_facet<ctype<E>>(getloc).widen(Char).

Дополнительные сведения см. в разделах use_facet и getloc.

Пример

// basic_ios_widen.cpp
// compile with: /EHsc
#include <ios>
#include <iostream>
#include <wchar.h>

int main( )
{
    using namespace std;
    char *z = "Hello";
    wchar_t y[2] = {0,0};
    cout << z[0] << endl;
    y[0] = wcout.widen( z[0] );
    wcout << &y[0] << endl;
}

basic_ios::swap

Меняет местами значения в этом объекте basic_ios и значения другого объекта basic_ios. Однако указатели на буферы потока не переключились.

void swap(basic_ios&& right);

Параметры

right
Объект basic_ios, используемый для обмена значений.

Замечания

Защищенная функция-член меняет обменивает все значения, хранящиеся в right, со значениями *this, за исключением сохраненного stream buffer pointer.

См. также

Потокобезопасность в стандартной библиотеке C++
iostream Программирования
iostreams Конвенций