Input/output library
C++는 다음과 같은 입력/출력 라이브러리를 포함합니다: 객체 지향 프로그래밍 스타일의 스트림 기반 I/O 라이브러리 , 출력 기반 함수군 (C++23부터) , 그리고 표준 C 스타일 I/O 함수 세트.
목차 |
스트림 기반 I/O
스트림 기반 입출력 라이브러리는 추상적인 입출력 장치를 중심으로 구성됩니다. 이러한 추상 장치들은 동일한 코드로 파일, 메모리 스트림, 또는 임의의 연산(예: 압축)을 수행하는 커스텀 어댑터 장치에 대한 입출력을 처리할 수 있게 합니다.
대부분의 클래스는 템플릿화되어 있어 어떤 기본 문자 유형에도 적용할 수 있습니다. 가장 일반적인 기본 문자 유형( char 와 wchar_t )에 대해 별도의 typedef가 제공됩니다. 클래스는 다음과 같은 계층 구조로 구성되어 있습니다:
상속 다이어그램
추상화 |
|
|
헤더에 정의됨
<ios>
|
|
|
서식 플래그 및 입출력 예외를 관리합니다
(클래스) |
|
|
임의의 스트림 버퍼를 관리합니다
(클래스 템플릿) |
|
|
헤더에 정의됨
<streambuf>
|
|
|
원시 장치를 추상화함
(클래스 템플릿) |
|
|
헤더에 정의됨
<ostream>
|
|
|
주어진 추상 장치(
std::basic_streambuf
)를 감싸고
고수준 출력 인터페이스를 제공함 (클래스 템플릿) |
|
|
헤더에 정의됨
<istream>
|
|
|
주어진 추상 장치(
std::basic_streambuf
)를 감싸고
고수준 입력 인터페이스를 제공함 (클래스 템플릿) |
|
|
주어진 추상 장치(
std::basic_streambuf
)를 감싸고
고수준 입출력 인터페이스를 제공함 (클래스 템플릿) |
|
파일 입출력 구현 |
|
|
헤더 파일에 정의됨
<fstream>
|
|
|
원시 파일 장치를 구현함
(클래스 템플릿) |
|
|
고수준 파일 스트림 입력 연산을 구현함
(클래스 템플릿) |
|
|
고수준 파일 스트림 출력 연산을 구현함
(클래스 템플릿) |
|
|
고수준 파일 스트림 입출력 연산을 구현함
(클래스 템플릿) |
|
문자열 입출력 구현 |
|
|
헤더에 정의됨
<sstream>
|
|
|
원시 문자열 장치를 구현함
(클래스 템플릿) |
|
|
고수준 문자열 스트림 입력 연산을 구현함
(클래스 템플릿) |
|
|
고수준 문자열 스트림 출력 연산을 구현함
(클래스 템플릿) |
|
|
고수준 문자열 스트림 입출력 연산을 구현함
(클래스 템플릿) |
|
배열 I/O 구현 |
|
|
헤더에 정의됨
<spanstream>
|
|
|
(C++23)
|
원시 고정 문자 버퍼 장치를 구현함
(클래스 템플릿) |
|
(C++23)
|
고정 문자 버퍼 입력 연산을 구현함
(클래스 템플릿) |
|
(C++23)
|
고정 문자 버퍼 출력 연산을 구현함
(클래스 템플릿) |
|
(C++23)
|
고정된 문자 버퍼 입력/출력 연산을 구현함
(클래스 템플릿) |
|
헤더에 정의됨
<strstream>
|
|
|
(C++98에서 사용 중단됨)
(C++26에서 제거됨)
|
원시 문자 배열 장치를 구현함
(클래스) |
|
(C++98에서 사용 중단됨)
(C++26에서 제거됨)
|
문자 배열 입력 연산을 구현함
(클래스) |
|
(C++98에서 사용 중단됨)
(C++26에서 제거됨)
|
문자 배열 출력 연산을 구현함
(클래스) |
|
(C++98에서 사용 중단됨)
(C++26에서 제거됨)
|
문자 배열 입력/출력 연산을 구현함
(클래스) |
동기화된 출력 (since C++20) |
|
|
헤더에 정의됨
<syncstream>
|
|
|
(C++20)
|
동기화된 출력 장치 래퍼
(클래스 템플릿) |
|
(C++20)
|
동기화된 출력 스트림 래퍼
(클래스 템플릿) |
Typedefs
다음의 일반 문자 타입에 대한 typedef들이 네임스페이스
std
에 제공됩니다:
미리 정의된 표준 스트림 객체
|
헤더 파일에 정의됨
<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 스트림 오류 코드
(열거형) |
|
(C++11)
|
iostream 오류 범주를 식별함
(함수) |
출력 함수 (since C++23)
유니코드를 인식하는 print 계열 함수들은 이미 형식이 지정된 텍스트에 대해 서식화된 입출력을 수행합니다. 이들은 std::format 의 모든 성능 이점을 제공하며, 기본적으로 로케일 독립적이고, 전역 상태를 줄이며, 임시 std::string 객체 할당과 operator << 호출을 피하며, 일반적으로 iostreams 와 stdio 에 비해 포매팅을 더 효율적으로 만듭니다.
다음의 출력 유사 함수들이 제공됩니다:
|
헤더 파일에 정의됨
<print>
|
|
|
(C++23)
|
인수의
형식화된
표현을 사용하여
stdout
또는 파일 스트림에 출력
(함수 템플릿) |
|
(C++23)
|
각 출력이 추가적인 새 줄로 종료된다는 점을 제외하고
std::print
와 동일
(함수 템플릿) |
|
타입 삭제된
인수 표현을 사용하여 유니코드 지원
stdout
또는 파일 스트림에 출력
(함수) |
|
|
타입 삭제된
인수 표현을 사용하여
stdout
또는 파일 스트림에 출력
(함수) |
|
|
헤더 파일에 정의됨
<ostream>
|
|
|
(C++23)
|
인수의
형식화된
표현을 출력
(함수 템플릿) |
|
(C++23)
|
인수의
형식화된
표현과 추가된
'
\n
'
을 출력
(함수 템플릿) |
C 스타일 I/O
C++는 또한 C에서 정의된 입출력 함수들 , 예를 들어 std::fopen , std::getc 등을 포함합니다.
참고 항목
| 파일시스템 라이브러리 (C++17부터) |