名前空間
変種
操作

入出力ライブラリ

提供: cppreference.com
< cpp

C++ には2つの入出力ライブラリが含まれています。 現代的なストリームベースの入出力ライブラリと、 C スタイルの入出力関数の標準のセットです。

目次

[編集] ストリームベースの入出力

ストリームベースの入出力ライブラリは抽象化された入出力デバイスを中心に体系化されます。 これらの抽象デバイスにより、ファイル、メモリストリーム、あるいはオンザフライで任意の演算 (例えば圧縮) を行うカスタムアダプタデバイスなどに対して、同じコードで入出力を処理できます。

ほとんどのクラスがテンプレート化されており、任意の基本文字型に適合できます。 最も一般的な基本文字型 (char および wchar_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) をラップし、高水準の入出力インタフェースを提供します
(クラステンプレート)
ファイル入出力実装
ヘッダ <fstream> で定義
生のファイルデバイスを実装します
(クラステンプレート)
高水準のファイルストリーム入力操作を実装します
(クラステンプレート)
高水準のファイルストリーム出力操作を実装します
(クラステンプレート)
高水準のファイルストリーム入出力操作を実装します
(クラステンプレート)
文字列入出力実装
ヘッダ <sstream> で定義
生の文字列デバイスを実装します
(クラステンプレート)
高水準の文字列ストリーム入力操作を実装します
(クラステンプレート)
高水準の文字列ストリーム出力操作を実装します
(クラステンプレート)
高水準の文字列ストリーム入出力操作を実装します
(クラステンプレート)
配列入出力実装
ヘッダ <strstream> で定義
(非推奨)
生の文字配列デバイスを実装します
(クラス)
(非推奨)
文字配列入力操作を実装します
(クラス)
(非推奨)
文字配列出力操作を実装します
(クラス)
(非推奨)
文字配列入出力操作を実装します
(クラス)
同期出力
ヘッダ <syncstream> で定義
同期出力デバイスラッパー
(クラステンプレート)
同期出力ストリームラッパー
(クラステンプレート)

[編集] typedef

一般的な文字型に対して以下の 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;
typedef basic_syncbuf<wchar_t>     wsyncbuf;
 
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;
typedef basic_osyncstream<wchar_t> wosyncstream;

[編集] 定義済みの標準ストリームオブジェクト

ヘッダ <iostream> で定義
標準 C 入力ストリーム stdin から読み込みます
(グローバルオブジェクト) [edit]
標準 C 出力ストリーム stdout に書き込みます
(グローバルオブジェクト) [edit]
標準 C エラーストリーム stderr に書き込みます。 バッファリングされません
(グローバルオブジェクト) [edit]
標準 C エラーストリーム stderr に書き込みます
(グローバルオブジェクト) [edit]

[編集] 入出力マニピュレータ

ストリームベース入出力ライブラリはストリームの動作を制御するために入出力マニピュレータ (std::boolalpha, std::hex など) を使用します。

[編集]

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

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

std::fpos の以下の特殊化が提供されます。

ヘッダ <ios> で定義
定義
streampos std::fpos<std::char_traits<char>::state_type>
wstreampos std::fpos<std::char_traits<wchar_t>::state_type>

[編集] エラーカテゴリインタフェース

ヘッダ <ios> で定義
(C++11)
iostream のエラーコード
(列挙) [edit]
iostream のエラーカテゴリを識別します
(関数) [edit]

[編集] C スタイルの入出力

C++ には std::fopen, std::getc などの C で定義されている入出力関数も含まれています。