Namespaces
Variants

std::basic_fstream<CharT,Traits>:: open

From cppreference.net

(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부터)
(3) (C++11부터)
(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 입니다. 다음 상수들이 정의되어 있습니다:
상수 설명
app 각 쓰기 전에 스트림의 끝으로 이동
binary 바이너리 모드 로 열기
in 읽기 위해 열기
out 쓰기 위해 열기
trunc 열 때 스트림의 내용을 버림
ate 열자마자 스트림의 끝으로 이동
noreplace (C++23) 배타적 모드로 열기

예제

#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); // 파일 생성
        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 성공적인 open 시 오류 상태 변경 방식이 불명확했음 오류 상태는 변경되지 않음
LWG 409 C++98 성공적인 open 시 오류 상태가 변경되지 않았음 오류 상태가 초기화됨 [1]
LWG 460 C++98 오버로드 (1) 에서 mode 의 기본 인자가 누락됨
(이는 개요 에는 존재함)
추가됨
  1. LWG 이슈 #22의 해결안은 재정의되었습니다.

참고 항목

스트림에 연결된 파일이 있는지 확인
(public member function)
연결된 파일을 닫음
(public member function)
파일을 열고 연결된 문자 시퀀스로 구성
( std::basic_filebuf<CharT,Traits> 의 public member function)