Namespaces
Variants

Input/output library

From cppreference.net

C++는 다음과 같은 입력/출력 라이브러리를 포함합니다: 객체 지향 프로그래밍 스타일의 스트림 기반 I/O 라이브러리 , 출력 기반 함수군 (C++23부터) , 그리고 표준 C 스타일 I/O 함수 세트.

목차

스트림 기반 I/O

스트림 기반 입출력 라이브러리는 추상적인 입출력 장치를 중심으로 구성됩니다. 이러한 추상 장치들은 동일한 코드로 파일, 메모리 스트림, 또는 임의의 연산(예: 압축)을 수행하는 커스텀 어댑터 장치에 대한 입출력을 처리할 수 있게 합니다.

대부분의 클래스는 템플릿화되어 있어 어떤 기본 문자 유형에도 적용할 수 있습니다. 가장 일반적인 기본 문자 유형( char wchar_t )에 대해 별도의 typedef가 제공됩니다. 클래스는 다음과 같은 계층 구조로 구성되어 있습니다:

cpp/io/ios base cpp/io/basic ios cpp/io/basic istream cpp/io/basic ifstream cpp/io/basic istringstream cpp/io/basic ostream cpp/io/basic ofstream cpp/io/basic ostringstream cpp/io/basic fstream cpp/io/basic stringstream cpp/io/basic iostream std-io-complete-inheritance.svg

상속 다이어그램

추상화
헤더에 정의됨 <ios>
서식 플래그 및 입출력 예외를 관리합니다
(클래스)
임의의 스트림 버퍼를 관리합니다
(클래스 템플릿)
헤더에 정의됨 <streambuf>
원시 장치를 추상화함
(클래스 템플릿)
헤더에 정의됨 <ostream>
주어진 추상 장치( std::basic_streambuf )를 감싸고
고수준 출력 인터페이스를 제공함
(클래스 템플릿)
헤더에 정의됨 <istream>
주어진 추상 장치( std::basic_streambuf )를 감싸고
고수준 입력 인터페이스를 제공함
(클래스 템플릿)
주어진 추상 장치( std::basic_streambuf )를 감싸고
고수준 입출력 인터페이스를 제공함
(클래스 템플릿)
파일 입출력 구현
헤더 파일에 정의됨 <fstream>
원시 파일 장치를 구현함
(클래스 템플릿)
고수준 파일 스트림 입력 연산을 구현함
(클래스 템플릿)
고수준 파일 스트림 출력 연산을 구현함
(클래스 템플릿)
고수준 파일 스트림 입출력 연산을 구현함
(클래스 템플릿)
문자열 입출력 구현
헤더에 정의됨 <sstream>
원시 문자열 장치를 구현함
(클래스 템플릿)
고수준 문자열 스트림 입력 연산을 구현함
(클래스 템플릿)
고수준 문자열 스트림 출력 연산을 구현함
(클래스 템플릿)
고수준 문자열 스트림 입출력 연산을 구현함
(클래스 템플릿)
배열 I/O 구현
헤더에 정의됨 <spanstream>
원시 고정 문자 버퍼 장치를 구현함
(클래스 템플릿)
고정 문자 버퍼 입력 연산을 구현함
(클래스 템플릿)
고정 문자 버퍼 출력 연산을 구현함
(클래스 템플릿)
고정된 문자 버퍼 입력/출력 연산을 구현함
(클래스 템플릿)
헤더에 정의됨 <strstream>
(C++98에서 사용 중단됨) (C++26에서 제거됨)
원시 문자 배열 장치를 구현함
(클래스)
(C++98에서 사용 중단됨) (C++26에서 제거됨)
문자 배열 입력 연산을 구현함
(클래스)
(C++98에서 사용 중단됨) (C++26에서 제거됨)
문자 배열 출력 연산을 구현함
(클래스)
(C++98에서 사용 중단됨) (C++26에서 제거됨)
문자 배열 입력/출력 연산을 구현함
(클래스)
동기화된 출력 (since C++20)
헤더에 정의됨 <syncstream>
동기화된 출력 장치 래퍼
(클래스 템플릿)
동기화된 출력 스트림 래퍼
(클래스 템플릿)

Typedefs

다음의 일반 문자 타입에 대한 typedef들이 네임스페이스 std 에 제공됩니다:

유형 정의
헤더에 정의됨 <ios>
std::ios std:: basic_ios < char >
std::wios std:: basic_ios < wchar_t >
헤더에 정의됨 <streambuf>
std::streambuf std:: basic_streambuf < char >
std::wstreambuf std:: basic_streambuf < wchar_t >
헤더에 정의됨 <istream>
std::istream std:: basic_istream < char >
std::wistream std:: basic_istream < wchar_t >
std::iostream std:: basic_iostream < char >
std::wiostream std:: basic_iostream < wchar_t >
헤더에 정의됨 <ostream>
std::ostream std:: basic_ostream < char >
std::wostream std:: basic_ostream < wchar_t >
헤더 파일에 정의됨 <fstream>
std::filebuf std:: basic_filebuf < char >
std::wfilebuf std:: basic_filebuf < wchar_t >
std::ifstream std:: basic_ifstream < char >
std::wifstream std:: basic_ifstream < wchar_t >
std::ofstream std:: basic_ofstream < char >
std::wofstream std:: basic_ofstream < wchar_t >
std::fstream std:: basic_fstream < char >
std::wfstream std:: basic_fstream < wchar_t >
헤더에 정의됨 <sstream>
std::stringbuf std:: basic_stringbuf < char >
std::wstringbuf std:: basic_stringbuf < wchar_t >
std::istringstream std:: basic_istringstream < char >
std::wistringstream std:: basic_istringstream < wchar_t >
std::ostringstream std:: basic_ostringstream < char >
std::wostringstream std:: basic_ostringstream < wchar_t >
std::stringstream std:: basic_stringstream < char >
std::wstringstream std:: basic_stringstream < wchar_t >
헤더에 정의됨 <spanstream>
std::spanbuf (C++23) std:: basic_spanbuf < char >
std::wspanbuf (C++23) std:: basic_spanbuf < wchar_t >
std::ispanstream (C++23) std:: basic_ispanstream < char >
std::wispanstream (C++23) std:: basic_ispanstream < wchar_t >
std::ospanstream (C++23) std:: basic_ospanstream < char >
std::wospanstream (C++23) std:: basic_ospanstream < wchar_t >
std::spanstream (C++23) std:: basic_spanstream < char >
std::wspanstream (C++23) std:: basic_spanstream < wchar_t >
헤더에 정의됨 <syncstream>
std::syncbuf (C++20) std:: basic_syncbuf < char >
std::wsyncbuf (C++20) std:: basic_syncbuf < wchar_t >
std::osyncstream (C++20) std:: basic_osyncstream < char >
std::wosyncstream (C++20) std:: basic_osyncstream < wchar_t >

미리 정의된 표준 스트림 객체

헤더 파일에 정의됨 <iostream>
표준 C 입력 스트림으로부터 읽기 stdin
(전역 객체)
표준 C 출력 스트림에 쓰기 stdout
(전역 객체)
표준 C 오류 스트림에 쓰기 stderr , 버퍼링되지 않음
(전역 객체)
표준 C 오류 스트림에 쓰기 stderr
(전역 객체)

I/O Manipulators

스트림 기반 I/O 라이브러리는 I/O 매니플레이터 (예: std::boolalpha , std::hex 등)를 사용하여 스트림의 동작 방식을 제어합니다.

타입

다음 보조 유형들이 정의됩니다:

헤더 파일에 정의됨 <ios>
상대적 파일/스트림 위치(fpos로부터의 오프셋)를 나타내며, 모든 파일 크기를 표현하기에 충분함
(typedef)
I/O 작업에서 전송된 문자 수나 I/O 버퍼의 크기를 나타냄
(typedef)
스트림이나 파일 내의 절대적 위치를 나타냄
(class template)

다음 typedef 이름들이 std:: fpos < std:: mbstate_t > 제공됩니다:

헤더에 정의됨 <iosfwd>
타입 정의
std::streampos std:: fpos < std:: char_traits < char > :: state_type >
std::wstreampos std:: fpos < std:: char_traits < wchar_t > :: state_type >
std::u8streampos (C++20) std:: fpos < std:: char_traits < char8_t > :: state_type >
std::u16streampos (C++11) std:: fpos < std:: char_traits < char16_t > :: state_type >
std::u32streampos (C++11) std:: fpos < std:: char_traits < char32_t > :: state_type >

오류 카테고리 인터페이스 (since C++11)

헤더 파일에 정의됨 <ios>
(C++11)
IO 스트림 오류 코드
(열거형)
iostream 오류 범주를 식별함
(함수)

출력 함수 (since C++23)

유니코드를 인식하는 print 계열 함수들은 이미 형식이 지정된 텍스트에 대해 서식화된 입출력을 수행합니다. 이들은 std::format 의 모든 성능 이점을 제공하며, 기본적으로 로케일 독립적이고, 전역 상태를 줄이며, 임시 std::string 객체 할당과 operator << 호출을 피하며, 일반적으로 iostreams stdio 에 비해 포매팅을 더 효율적으로 만듭니다.

다음의 출력 유사 함수들이 제공됩니다:

헤더 파일에 정의됨 <print>
(C++23)
인수의 형식화된 표현을 사용하여 stdout 또는 파일 스트림에 출력
(함수 템플릿)
(C++23)
각 출력이 추가적인 새 줄로 종료된다는 점을 제외하고 std::print 와 동일
(함수 템플릿)
타입 삭제된 인수 표현을 사용하여 유니코드 지원 stdout 또는 파일 스트림에 출력
(함수)
타입 삭제된 인수 표현을 사용하여 stdout 또는 파일 스트림에 출력
(함수)
헤더 파일에 정의됨 <ostream>
인수의 형식화된 표현을 출력
(함수 템플릿)
인수의 형식화된 표현과 추가된 ' \n ' 을 출력
(함수 템플릿)

C 스타일 I/O

C++는 또한 C에서 정의된 입출력 함수들 , 예를 들어 std::fopen , std::getc 등을 포함합니다.

참고 항목

파일시스템 라이브러리 (C++17부터)