입/출력 라이브러리
cppreference.com
< cpp
C++ 은 2가지 입/출력 라이브러리를 포함하고 있습니다: 객체 지향 방식 의 스트림 기반 입/출력 라이브러리와 C방식의 입/출력 함수 표준 집합
목차 |
[편집]스트림 기반 입/출력
스트림 기반 입/출력 라이브러리는 추상적인 입/출력 장치로 구조화되어 있습니다. 이 구조화된 장치들은 동일한 코드로 파일, 메모리 스트림 또는 임의의 동작(예를 들어, 압축)을 실시간으로 수행하는 어댑터 장치에 대한 입/출력을 동일하게 다룰 수 있도록 합니다.
대부분의 클래스는 템플릿화 되어 있어서 어떤 기본 문자 타입에도 적용할 수 있습니다. 대부분의 일반적인 기본 문자 타입 (char and wchar_t) 을 위해 몇몇 typedef 도 제공합니다. 클래스는 다음의 구조로 구조화되어 있습니다:
Inheritance diagram
Abstraction | |
<ios> 헤더에 정의됨. | |
형식 지정 플래그와 입/출력 예외를 관리합니다 (class) | |
임시 스트림 버퍼를 관리합니다 (class template) | |
<streambuf> 헤더에 정의됨. | |
raw device를 추상화합니다 (class template) | |
<ostream> 헤더에 정의됨. | |
추상 장치인 (std::basic_streambuf)를 감싸서 고수준의 출력 인터페이스를 제공합니다 (class template) | |
<istream> 헤더에 정의됨. | |
추상 장치인 (std::basic_streambuf)를 감싸서 고수준의 입력 인터페이스를 제공합니다 (class template) | |
추상 장치인 (std::basic_streambuf)를 감싸서 고수준의 입/출력 인터페이스를 제공합니다 (class template) | |
File I/O implementation | |
<fstream> 헤더에 정의됨. | |
raw 파일 장치(device)를 구현합니다 (class template) | |
고수준의 파일 스트림 입력 동작을 구현합니다 (class template) | |
고수준의 파일 출력 동작을 구현합니다 (class template) | |
고수준의 파일 스트림 입/출력 동작을 구현합니다 (class template) | |
String I/O implementation | |
<sstream> 헤더에 정의됨. | |
raw 문자 장치(string device)를 구현합니다 (class template) | |
고수준의 문자열 스트림 입력 동작을 구현합니다 (class template) | |
고수준의 문자열 스트림 출력 동작을 구현합니다 (class template) | |
고수준의 문자열 스트림 입/출력 동작을 구현합니다 (class template) | |
Array I/O implementations | |
<spanstream> 헤더에 정의됨. | |
(C++23) | 고정 크기 문자 raw 버퍼 장치를 구현합니다 (class template) |
(C++23) | 고정 크기 문자 버퍼 입력 동작을 구현합니다 (class template) |
(C++23) | 고정 크기 문자 버퍼 출력 동작을 구현합니다 (class template) |
(C++23) | 고정 크기 문자 버퍼 입/출력 동작을 구현합니다 (class template) |
<strstream> 헤더에 정의됨. | |
(deprecated in C++98) | raw 문자 배열 장치를 구현합니다 (class) |
(deprecated in C++98) | 문자 배열 입력 동작을 구현합니다 (class) |
(deprecated in C++98) | 문자 배열 출력 동작을 구현합니다 (class) |
(deprecated in C++98) | 문자 배열 입/출력 동작을 구현합니다 (class) |
Synchronized output | |
<syncstream> 헤더에 정의됨. | |
(C++20) | 동기화된 출력 장치 wrapper (class template) |
(C++20) | 동기화된 출력 스트림 wrapper (class template) |
[편집]Typedefs
일반적인 문자 타입을 위해 아래의 typedef들을 제공합니다.:
typedef basic_ios<char> ios;typedef basic_ios<wchar_t> wios; typedef basic_streambuf<char> streambuf;typedef basic_streambuf<wchar_t> wstreambuf;typedef basic_filebuf<char> filebuf;typedef basic_filebuf<wchar_t> wfilebuf;typedef basic_stringbuf<char> stringbuf;typedef basic_stringbuf<wchar_t> wstringbuf;typedef basic_syncbuf<char> syncbuf;// C++20typedef basic_syncbuf<wchar_t> wsyncbuf;// C++20typedef basic_spanbuf<char> spanbuf;// C++23typedef basic_spanbuf<wchar_t> wspanbuf;// C++23 typedef basic_istream<char> istream;typedef basic_istream<wchar_t> wistream;typedef basic_ostream<char> ostream;typedef basic_ostream<wchar_t> wostream;typedef basic_iostream<char> iostream;typedef basic_iostream<wchar_t> wiostream; typedef basic_ifstream<char> ifstream;typedef basic_ifstream<wchar_t> wifstream;typedef basic_ofstream<char> ofstream;typedef basic_ofstream<wchar_t> wofstream;typedef basic_fstream<char> fstream;typedef basic_fstream<wchar_t> wfstream; typedef basic_istringstream<char> istringstream;typedef basic_istringstream<wchar_t> wistringstream;typedef basic_ostringstream<char> ostringstream;typedef basic_ostringstream<wchar_t> wostringstream;typedef basic_stringstream<char> stringstream;typedef basic_stringstream<wchar_t> wstringstream; typedef basic_osyncstream<char> osyncstream;// C++20typedef basic_osyncstream<wchar_t> wosyncstream;// C++20 typedef basic_ispanstream<char> ispanstream;// C++23typedef basic_ispanstream<wchar_t> wispanstream;// C++23typedef basic_ospanstream<char> ospanstream;// C++23typedef basic_ospanstream<wchar_t> wospanstream;// C++23typedef basic_spanstream<char> spanstream;// C++23typedef basic_spanstream<wchar_t> wspanstream;// C++23
[편집]Predefined standard stream objects
<iostream> 헤더에 정의됨. | |
reads from the standard C input stream stdin (global object) | |
writes to the standard C output stream stdout (global object) | |
writes to the standard C error stream stderr, unbuffered (global object) | |
writes to the standard C error stream stderr (global object) |
[편집]I/O 처리기(Manipulator)
스트림 기반 입/출력 라이브러리는 스트림의 동작 제어를 위해 I/O 처리기(Manipulator) (e.g. std::boolalpha, std::hex, 등.)를 사용합니다
[편집]Types
다음의 보조 타입이 정의되어 있습니다.
<ios> 헤더에 정의됨. | |
어떤 파일 크기를 나타내더라도 충분한 파일/스트림의 상대 위치를 나타냅니다 (fpos부터의 오프셋) (typedef) | |
입/출력 동작으로 교환된 문자의 개수나 입/출력 버퍼의 크기를 나타냅니다 (typedef) | |
스트림이나 파일 안에서의 절대적인 위치를 나타냅니다 (class template) |
std::fpos<std::mbstate_t>를 위해 아래의 typedef 이름이 제공됩니다.
<iosfwd> 헤더에 정의됨. | |
Type | Definition |
streampos | std::fpos<std::char_traits<char>::state_type> |
wstreampos | std::fpos<std::char_traits<wchar_t>::state_type> |
u8streampos (C++20) | std::fpos<std::char_traits<char8_t>::state_type> |
u16streampos (C++11) | std::fpos<std::char_traits<char16_t>::state_type> |
u32streampos (C++11) | std::fpos<std::char_traits<char32_t>::state_type> |
[편집]Error category interface
<ios> 헤더에 정의됨. | |
(C++11) | the IO stream error codes (enum) |
(C++11) | identifies the iostream error category (function) |
[편집] C-style I/O
C++ 은 또한 std::fopen, std::getc와 같은 C에서 정의한 입/출력 함수를 포함합니다