Spec-Zone.ru › C++

std::basic_ifstream

Определён в заголовке <fstream>
template< 
    class CharT, 
    class Traits = std::char_traits<CharT>
> class basic_ifstream : public std::basic_istream<CharT, Traits>

Шаблон класса basic_ifstream реализует высокоуровневые операции ввода для файловых потоков. Он связывает буфер файлового потока (std::basic_filebuf) с высокоуровневым интерфейсом (std::basic_istream).

Типичная реализация std::basic_ifstream содержит только один нестатический член-данные, не унаследованный от базового класса: экземпляр std::basic_filebuf<CharT,Traits>.

cpp/io/ios base cpp/io/basic ios cpp/io/basic istream

Диаграмма наследования

Предоставлено несколько псевдонимов типов для распространённых типов символов:

Определён в заголовке <fstream>
Тип Определение
std::ifstream std::basic_ifstream<char>
std::wifstream std::basic_ifstream<wchar_t>

Типы-члены

Тип-член Определение
char_type CharT
traits_type Traits; программа некорректна, если Traits::char_type не является CharT.
int_type Traits::int_type
pos_type Traits::pos_type
off_type Traits::off_type
native_handle_type(C++26) тип, определяемый реализацией, который является TriviallyCopyable и semiregular

Функции-члены

(constructor)
создаёт файловый поток
(открытая функция-член)
(destructor)
[virtual] (implicitly declared)
уничтожает basic_ifstream и связанный буфер, закрывает файл
(виртуальная открытая функция-член)
operator=
(C++11)
перемещает файловый поток
(открытая функция-член)
swap
(C++11)
обменивает содержимое двух файловых потоков
(открытая функция-член)
rdbuf
возвращает объект базового устройства для работы с файлами
(открытая функция-член)
native_handle
(C++26)
возвращает дескриптор, определяемый реализацией
(открытая функция-член)
Операции с файлами
is_open
проверяет, связан ли поток с файлом
(открытая функция-член)
open
открывает файл и связывает его с потоком
(открытая функция-член)
close
закрывает связанный файл
(открытая функция-член)

Функции, не являющиеся членами

std::swap(std::basic_ifstream)
(C++11)
специализирует алгоритм std::swap
(шаблон функции)

Унаследовано от std::basic_istream

Функции-члены

Форматированный ввод
operator>>
извлекает форматированные данные
(открытая функция-член std::basic_istream<CharT,Traits>)
Неформатированный ввод
get
извлекает символы
(открытая функция-член std::basic_istream<CharT,Traits>)
peek
читает следующий символ, не извлекая его
(открытая функция-член std::basic_istream<CharT,Traits>)
unget
отменяет извлечение символа
(открытая функция-член std::basic_istream<CharT,Traits>)
putback
помещает символ во входной поток
(открытая функция-член std::basic_istream<CharT,Traits>)
getline
извлекает символы, пока не встретится заданный символ
(открытая функция-член std::basic_istream<CharT,Traits>)
ignore
извлекает и отбрасывает символы, пока не встретится заданный символ
(открытая функция-член std::basic_istream<CharT,Traits>)
read
извлекает блоки символов
(открытая функция-член std::basic_istream<CharT,Traits>)
readsome
извлекает уже доступные блоки символов
(открытая функция-член std::basic_istream<CharT,Traits>)
gcount
возвращает количество символов, извлечённых последней операцией неформатированного ввода
(открытая функция-член std::basic_istream<CharT,Traits>)
Позиционирование
tellg
возвращает указатель позиции ввода
(открытая функция-член std::basic_istream<CharT,Traits>)
seekg
устанавливает указатель позиции ввода
(открытая функция-член std::basic_istream<CharT,Traits>)
Разное
sync
синхронизируется с базовым устройством хранения
(открытая функция-член std::basic_istream<CharT,Traits>)

Классы-члены

sentry
реализует базовую логику подготовки потока к операциям ввода
(открытый класс-член std::basic_istream<CharT,Traits>)

Унаследовано от std::basic_ios

Типы-члены

Тип-член Определение
char_type CharT
traits_type Traits
int_type Traits::int_type
pos_type Traits::pos_type
off_type Traits::off_type

Функции-члены

Функции состояния
good
проверяет, не произошла ли ошибка, то есть доступны ли операции ввода-вывода
(открытая функция-член std::basic_ios<CharT,Traits>)
eof
проверяет, достигнут ли конец файла
(открытая функция-член std::basic_ios<CharT,Traits>)
fail
проверяет, произошла ли ошибка
(открытая функция-член std::basic_ios<CharT,Traits>)
bad
проверяет, произошла ли неисправимая ошибка
(открытая функция-член std::basic_ios<CharT,Traits>)
operator!
проверяет, произошла ли ошибка (синоним fail())
(открытая функция-член std::basic_ios<CharT,Traits>)
operator bool
проверяет, не произошла ли ошибка (синоним !fail())
(открытая функция-член std::basic_ios<CharT,Traits>)
rdstate
возвращает флаги состояния
(открытая функция-член std::basic_ios<CharT,Traits>)
setstate
устанавливает флаги состояния
(открытая функция-член std::basic_ios<CharT,Traits>)
clear
изменяет флаги состояния
(открытая функция-член std::basic_ios<CharT,Traits>)
Форматирование
copyfmt
копирует информацию о форматировании
(открытая функция-член std::basic_ios<CharT,Traits>)
fill
управляет символом заполнения
(открытая функция-член std::basic_ios<CharT,Traits>)
Разное
exceptions
управляет маской исключений
(открытая функция-член std::basic_ios<CharT,Traits>)
imbue
устанавливает локаль
(открытая функция-член std::basic_ios<CharT,Traits>)
rdbuf
управляет связанным буфером потока
(открытая функция-член std::basic_ios<CharT,Traits>)
tie
управляет связанным потоком
(открытая функция-член std::basic_ios<CharT,Traits>)
narrow
преобразует символы в узкое представление
(открытая функция-член std::basic_ios<CharT,Traits>)
widen
преобразует символы в широкое представление
(открытая функция-член std::basic_ios<CharT,Traits>)

Унаследовано от std::ios_base

Функции-члены

Форматирование
flags
управляет флагами форматирования
(открытая функция-член std::ios_base)
setf
устанавливает заданный флаг форматирования
(открытая функция-член std::ios_base)
unsetf
сбрасывает заданный флаг форматирования
(открытая функция-член std::ios_base)
precision
управляет десятичной точностью операций с числами с плавающей точкой
(открытая функция-член std::ios_base)
width
управляет шириной поля
(открытая функция-член std::ios_base)
Локали
imbue
устанавливает локаль
(открытая функция-член std::ios_base)
getloc
возвращает текущую локаль
(открытая функция-член std::ios_base)
Внутренний расширяемый массив
xalloc
[статическая]
возвращает уникальное в пределах программы целое число, которое можно безопасно использовать в качестве индекса для pword() и iword()
(открытая статическая функция-член std::ios_base)
iword
при необходимости изменяет размер закрытого хранилища и предоставляет доступ к элементу типа long с заданным индексом
(открытая функция-член std::ios_base)
pword
при необходимости изменяет размер закрытого хранилища и предоставляет доступ к элементу типа void* с заданным индексом
(открытая функция-член std::ios_base)
Разное
register_callback
регистрирует функцию обратного вызова события
(открытая функция-член std::ios_base)
sync_with_stdio
[статическая]
задаёт, могут ли библиотеки ввода-вывода C++ и C взаимодействовать друг с другом
(открытая статическая функция-член std::ios_base)
Классы-члены
failure
исключение потока
(открытый класс-член std::ios_base)
Init
инициализирует стандартные объекты потоков
(открытый класс-член std::ios_base)

Типы-члены и константы

Тип Описание
openmode
тип режима открытия потока
Константа Описание
app переходить в конец потока перед каждой записью
binary открыть в двоичном режиме
in открыть для чтения
out открыть для записи
trunc отбросить содержимое потока при открытии
ate перейти в конец потока сразу после открытия
noreplace (C++23) открыть в монопольном режиме

(псевдоним типа)
fmtflags
тип флагов форматирования
Константа Описание
dec использовать десятичную систему счисления для целочисленного ввода-вывода: см. std::dec
oct использовать восьмеричную систему счисления для целочисленного ввода-вывода: см. std::oct
hex использовать шестнадцатеричную систему счисления для целочисленного ввода-вывода: см. std::hex
basefield dec | oct | hex. Полезно для операций маскирования
left выравнивание по левому краю (символы заполнения добавляются справа): см. std::left
right выравнивание по правому краю (символы заполнения добавляются слева): см. std::right
internal внутреннее выравнивание (символы заполнения добавляются в указанное внутреннее место): см. std::internal
adjustfield left | right | internal. Полезно для операций маскирования
scientific выводить числа с плавающей точкой в экспоненциальной нотации или в шестнадцатеричной нотации в сочетании с fixed: см. std::scientific
fixed выводить числа с плавающей точкой в фиксированной нотации или в шестнадцатеричной нотации в сочетании с scientific: см. std::fixed
floatfield scientific | fixed. Полезно для операций маскирования
boolalpha вставлять и извлекать значения типа bool в алфавитно-цифровом формате: см. std::boolalpha
showbase выводить префикс, указывающий основание системы счисления для целочисленного вывода; требовать указатель валюты при денежном вводе-выводе: см. std::showbase
showpoint всегда выводить символ десятичной точки при выводе чисел с плавающей точкой: см. std::showpoint
showpos выводить символ + для неотрицательных чисел: см. std::showpos
skipws пропускать начальные пробельные символы перед некоторыми операциями ввода: см. std::skipws
unitbuf сбрасывать буфер вывода после каждой операции вывода: см. std::unitbuf
uppercase заменять некоторые строчные буквы их заглавными эквивалентами при некоторых операциях вывода: см. std::uppercase

(псевдоним типа)
iostate
тип состояния потока
Константа Описание
goodbit ошибок нет
badbit неустранимая ошибка потока
failbit операция ввода-вывода завершилась неудачно (ошибка форматирования или извлечения)
eofbit связанная входная последовательность достигла конца файла

(псевдоним типа)
seekdir
тип направления перемещения
Константа Описание
beg начало потока
end конец потока
cur текущая позиция указателя позиции потока

(псевдоним типа)
event
задаёт тип события
(перечисление)
event_callback
тип функции обратного вызова
(псевдоним типа)

Примечания

Макрос проверки поддержки возможностей Значение Стандарт Возможность
__cpp_lib_fstream_native_handle 202306L (C++26) поддержка нативных дескрипторов

Пример

#include <fstream>
#include <iostream>
#include <string>

int main()
{
    std::string filename = "Test.b";
    
    // prepare a file to read
    double d = 3.14;
    std::ofstream(filename, std::ios::binary)
        .write(reinterpret_cast<char*>(&d), sizeof d) << 123 << "abc";
    
    // open file for reading
    std::ifstream istrm(filename, std::ios::binary);
    if (!istrm.is_open())
        std::cout << "failed to open " << filename << '\n';
    else
    {
        double d;
        istrm.read(reinterpret_cast<char*>(&d), sizeof d); // binary input
        int n;
        std::string s;
        if (istrm >> n >> s)                               // text input
            std::cout << "read back from file: " << d << ' ' << n << ' ' << s << '\n';
    }
}

Вывод:

read back from file: 3.14 123 abc

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/io/basic_ifstream

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API