std::basic_fstream<CharT,Traits>::open
void open( const char* filename,
std::ios_base::openmode mode
= std::ios_base::in | std::ios_base::out );
|
(1) | |
void open( const std::filesystem::path::value_type* filename,
std::ios_base::openmode mode
= std::ios_base::in | std::ios_base::out );
|
(2) | (с C++17) |
void open( const std::string& filename,
std::ios_base::openmode mode
= std::ios_base::in | std::ios_base::out );
|
(3) | (с C++11) |
void open( const std::filesystem::path& filename,
std::ios_base::openmode mode
= std::ios_base::in | std::ios_base::out );
|
(4) | (с C++17) |
Открывает и ассоциирует файл с именем filename с потоком.
При успехе вызывает clear(). При ошибке вызывает setstate(failbit).
1,2) Эффективно вызывает
rdbuf()->open(filename, mode) (см. std::basic_filebuf::open для подробностей об эффектах этого вызова). Перегрузка (2) предоставляется только если std::filesystem::path::value_type не является char.(с C++17)
3,4) Эффективно вызывает (1,2), как если бы это было сделано с помощью
open(filename.c_str(), mode). Параметры
| filename | - | имя файла, который нужно открыть | ||||||||||||||||
| mode | - | определяет режим открытия потока. Это BitmaskType, определены следующие константы:
|
Возвращаемое значение
(ничего)
Пример
#include <fstream>
#include <iostream>
#include <string>
int main()
{
std::string filename = "example.123";
std::fstream fs;
fs.open(filename);
if (!fs.is_open())
{
fs.clear();
fs.open(filename, std::ios::out); // create file
fs.close();
fs.open(filename);
}
std::cout << std::boolalpha;
std::cout << "fs.is_open() = " << fs.is_open() << '\n';
std::cout << "fs.good() = " << fs.good() << '\n';
}Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применено к | Поведение, как опубликовано | Правильное поведение |
|---|---|---|---|
| LWG 22 | C++98 | не было ясно, как изменяется состояние ошибки при успешном открытии | состояние ошибки не изменяется |
| LWG 409 | C++98 | состояние ошибки не изменялось при успешном открытии | оно очищается[1] |
| LWG 460 | C++98 | аргумент по умолчанию для mode в перегрузке (1)отсутствовал (он присутствует в синопсисе) |
добавлен |
- Решение проблемы LWG № 22 переопределено.
См. также
| проверяет, ассоциирован ли поток с файлом (публичный член-функция) |
|
| закрывает связанный файл (публичный член-функция) |
|
| открывает файл и настраивает его в качестве связанной последовательности символов (публичный член-функция std::basic_filebuf<CharT,Traits>) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/io/basic_fstream/open