名前空間
変種
操作

入出力ライブラリ

From cppreference.com
< cpp
 
 
入出力ライブラリ
 

C++には、OOPスタイルストリームベースI/Oライブラリと、プリントベースの関数群(C++23以降)、そして標準的なCスタイルI/O関数群が含まれています。

目次

[編集] ストリームベースI/O

ストリームベースの入出力ライブラリは、抽象的な入出力デバイスを中心に構成されています。これらの抽象デバイスにより、ファイル、メモリストリーム、またはその場で任意の操作(例:圧縮)を行うカスタムアダプタデバイスへの入出力を、同じコードで扱うことができます。

ほとんどのクラスはテンプレート化されているため、任意の基本文字型に適応させることができます。最も一般的な基本文字型(charwchar_t)のために、個別のtypedefが提供されています。クラスは以下の階層に構成されています。

cpp/io/ios basecpp/io/basic ioscpp/io/basic istreamcpp/io/basic ifstreamcpp/io/basic istringstreamcpp/io/basic ostreamcpp/io/basic ofstreamcpp/io/basic ostringstreamcpp/io/basic fstreamcpp/io/basic stringstreamcpp/io/basic iostreamstd-io-complete-inheritance.svg

継承図

抽象化
ヘッダ<ios>で定義
書式化フラグと入出力例外を管理する
(クラス) [編集]
任意のストリームバッファを管理する
(クラステンプレート) [編集]
ヘッダ <streambuf> で定義
生のデバイスを抽象化する
(クラステンプレート) [編集]
ヘッダ<ostream>で定義
与えられた抽象デバイス(std::basic_streambuf)をラップし
高水準な出力インターフェースを提供する
(クラステンプレート) [編集]
ヘッダ<istream>で定義
与えられた抽象デバイス(std::basic_streambuf)をラップし
高水準な入力インターフェースを提供する
(クラステンプレート) [編集]
与えられた抽象デバイス(std::basic_streambuf)をラップし
高レベルな入出力インターフェースを提供する
(クラステンプレート) [編集]
ファイルI/Oの実装
ヘッダ <fstream> で定義
生のファイルデバイスを実装する
(クラステンプレート) [編集]
高レベルなファイルストリーム入力操作を実装する
(クラステンプレート) [編集]
高レベルなファイルストリーム出力操作を実装する
(クラステンプレート) [編集]
高レベルなファイルストリーム入出力操作を実装する
(クラステンプレート) [編集]
文字列I/Oの実装
ヘッダ <sstream> で定義
生の文字列デバイスを実装する
(クラステンプレート) [編集]
高レベルな文字列ストリーム入力操作を実装する
(クラステンプレート) [編集]
高レベルな文字列ストリーム出力操作を実装する
(クラステンプレート) [編集]
高レベルな文字列ストリーム入出力操作を実装する
(クラステンプレート) [編集]
配列I/Oの実装
ヘッダ <spanstream> で定義
生の固定長文字バッファデバイスを実装する
(クラステンプレート) [編集]
固定長文字バッファ入力操作を実装する
(クラステンプレート) [編集]
固定長文字バッファ出力操作を実装する
(クラステンプレート) [編集]
固定長文字バッファ入出力操作を実装する
(クラステンプレート) [編集]
ヘッダ <strstream> で定義
(C++98で非推奨)(C++26で削除)
生の文字配列デバイスを実装する
(クラス) [編集]
(C++98で非推奨)(C++26で削除)
文字配列入力操作を実装する
(クラス) [編集]
(C++98で非推奨)(C++26で削除)
文字配列出力操作を実装する
(クラス) [編集]
(C++98で非推奨)(C++26で削除)
文字配列入出力操作を実装する
(クラス) [編集]
同期出力 (C++20以降)
ヘッダ <syncstream> で定義
同期出力デバイスラッパー
(クラステンプレート) [編集]
同期出力ストリームラッパー
(クラステンプレート) [編集]

[編集] typedef

名前空間 std には、一般的な文字型に対する以下のtypedefが提供されています

定義
ヘッダ<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マニピュレータ

ストリームベースのI/Oライブラリは、I/Oマニピュレータ(例:std::boolalphastd::hexなど)を使用して、ストリームの振る舞いを制御します。

[編集]

以下の補助的な型が定義されています

ヘッダ<ios>で定義
ファイル/ストリームの相対的な位置(fposからのオフセット)を表し、任意のファイルサイズを表現するのに十分
(typedef) [編集]
I/O操作で転送された文字数、またはI/Oバッファのサイズを表す
(typedef) [編集]
ストリームまたはファイル内の絶対位置を表す
(クラステンプレート) [編集]

std::fpos<std::mbstate_t> に対する以下のtypedef名が提供されています

ヘッダ <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>

[編集] エラーカテゴリインターフェース (C++11以降)

ヘッダ<ios>で定義
(C++11)
IOストリームのエラーコード
(enum) [編集]
iostreamのエラーカテゴリを識別する
(関数) [編集]

[編集] プリント関数 (C++23以降)

すでにフォーマットされたテキストに対して書式付きI/Oを実行する、Unicode対応のプリント系関数です。これらはstd::formatのすべてのパフォーマンス上の利点を持ち、デフォルトでロケールに依存せず、グローバルな状態を減らし、一時的なstd::stringオブジェクトのアロケーションとoperator<<の呼び出しを避け、一般的にiostreamstdioと比較してフォーマットをより効率的にします。

以下のプリント系関数が提供されています

ヘッダ <print> で定義
(C++23)
引数の書式化された表現を用いて、stdoutまたはファイルストリームに出力する
(関数テンプレート) [編集]
(C++23)
std::printと同じだが、各出力の末尾に改行が追加される点が異なる
(関数テンプレート) [編集]
引数の型消去された表現を用いて、Unicode対応のstdoutまたはファイルストリームに出力する
(関数) [編集]
引数の型消去された表現を用いて、stdoutまたはファイルストリームに出力する
(関数) [編集]
 
ヘッダ<ostream>で定義
引数の書式化された表現を出力する
(関数テンプレート) [編集]
引数の書式化された表現に'\n'を付加して出力する
(関数テンプレート) [編集]

[編集] CスタイルI/O

C++には、std::fopenstd::getcなどの、C言語によって定義された入出力関数も含まれています。

[編集] 関連項目

ファイルシステムライブラリ (C++17以降)
English 日本語 中文(简体) 中文(繁體)