std::basic_ifstream<CharT,Traits>::basic_ifstream
basic_ifstream(); | (1) | |
explicit basic_ifstream( const char* filename,
std::ios_base::openmode mode
= std::ios_base::in );
| (2) | |
explicit basic_ifstream( const std::filesystem::path::value_type* filename,
std::ios_base::openmode mode
= std::ios_base::in );
| (3) | (начиная с C++17) |
explicit basic_ifstream( const std::string& filename,
std::ios_base::openmode mode
= std::ios_base::in );
| (4) | (начиная с C++11) |
template< class FsPath >
explicit basic_ifstream( const FsPath& filename,
std::ios_base::openmode mode
= std::ios_base::in );
| (5) | (начиная с C++17) |
basic_ifstream( basic_ifstream&& other ); | (6) | (начиная с C++11) |
basic_ifstream( const basic_ifstream& rhs ) = delete; | (7) | (начиная с C++11) |
Создает новый файловый поток.
1) Конструктор по умолчанию: создает поток, не связанный с файлом: создает
std::basic_filebuf по умолчанию и конструирует базовый класс с указателем на этот созданный по умолчанию член std::basic_filebuf.
2,3) Сначала выполняет те же действия, что и конструктор по умолчанию, а затем связывает поток с файлом, вызывая
rdbuf()->open(filename, mode | std::ios_base::in) (подробное описание эффектов этого вызова см. в std::basic_filebuf::open). Если вызов open() возвращает нулевой указатель, устанавливает setstate(failbit). Перегрузка (3) предоставляется только в том случае, если std::filesystem::path::value_type не является char.(начиная с C++17)
4,5) То же, что и
basic_ifstream(filename.c_str(), mode). (5) участвует в разрешении перегрузки только в том случае, если FsPath является std::filesystem::path.(начиная с C++17)
6) Конструктор перемещения. Сначала перемещением конструирует базовый класс из
other (что не влияет на указатель rdbuf()), затем перемещением конструирует член std::basic_filebuf, а после этого вызывает this->set_rdbuf(), чтобы установить новый basic_filebuf в качестве указателя rdbuf() в базовом классе.
7) Конструктор копирования удален: этот класс нельзя копировать.
Параметры
| filename | - | имя открываемого файла | ||||||||||||||||
| mode | - | задает режим открытия потока. Можно использовать следующие константы и их побитовое ИЛИ:
|
||||||||||||||||
| other | - | другой файловый поток, используемый в качестве источника |
Пример
#include <fstream>
#include <string>
#include <utility>
int main()
{
std::ifstream f0;
std::ifstream f1("test.bin", std::ios::binary);
std::string name = "example.txt";
std::ifstream f2(name);
std::ifstream f3(std::move(f1));
}
Отчеты об ошибках
Следующие отчеты об ошибках, изменяющие поведение, были ретроактивно применены к ранее опубликованным стандартам C++.
| Отчет об ошибке | Применяется к | Опубликованное поведение | Правильное поведение |
|---|---|---|---|
| LWG 3430 | C++17 |
Перегрузка std::filesystem::path приводила к нежелательным преобразованиям | это предотвращено путем превращения ее в шаблон |
См. также
| открывает файл и связывает его с потоком (открытая функция-член) |
|
| открывает файл и настраивает его как связанную последовательность символов (открытая функция-член класса std::basic_filebuf<CharT,Traits>) |
|
заменяет rdbuf, не сбрасывая его состояние ошибки (защищенная функция-член) |
|
| создает объект (открытая функция-член класса std::basic_istream<CharT,Traits>) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/io/basic_ifstream/basic_ifstream