| cppreference.com -> C++入出力 -> 詳細 |
fstream( const char *ファイル名, openmode モード ); ifstream( const char *ファイル名, openmode モード ); ofstream( const char *ファイル名, openmode モード ); |
fstream, ifstream, ofstreamオブジェクトはファイルの入出力に使用される。 オプションのモード はファイルをどのように開くかを定義するものである。 iosストリームモードフラグに従う。 オプションのファイル名 はストリームに関連づけられるファイルを指定する。 例えば以下のコードはデータを入力して結果を出力ファイルに追記する。
ifstream fin( "/tmp/data.txt" );
ofstream fout( "/tmp/results.txt", ios::app );
while( fin >> temp )
fout << temp + 2 << endl;
fin.close();
fout.close();
ファイルの入出力のストリームはあらかじめ定義された入出力ストリームである cin、coutと同じように使用することができる。
関連トピック:bool bad(); |
現在のストリームに致命的なエラーが発生した場合にtrueを返す。 そうでない場合にはfalseを返す。
関連トピック:void clear( iostate フラグ = goodbit ); |
現在のストリームに関連づけられたフラグをクリアする。 デフォルトのフラグはgoodbit(異常なし)で、すべてのフラグがクリアされる。 そうでない場合は指定されたフラグ のみをクリアする。
関連トピック:void close(); |
ファイルに関連づけられたストリームを閉じる。
関連トピック:bool eof(); |
関連づけられたファイルの最後に達した場合にtrueを返す。 そうでない場合にはfalseを返す。 サンプル:
char ch;
ifstream fin( "temp.txt" );
while( !fin.eof() ) {
fin >> ch;
cout << ch;
}
fin.close();
関連トピック:bool fail(); |
現在のストリームにエラーが発生した場合にtrueを返す。 そうでない場合にはfalseを返す。
関連トピック:char fill(); char fill( char 文字 ); |
fill()は現在の詰め物文字を返す。 あるいは現在の詰め物文字を文字 に指定された文字に設定する。 詰め物文字はwidthで定義された文字数よりも少ない場合に 空白を埋める文字として使用される。デフォルトの詰め物文字は空白である。
関連トピック:fmtflags flags(); fmtflags flags( fmtflags フラグ ); |
flags()関数は現在のストリームの書式フラグ を返す。あるいは、現在のストリームの書式フラグをフラグ に設定する。
関連トピック:ostream &flush(); |
flush()関数は現在の出力ストリームのバッファの内容を、出力デバイスに書き込む。 出力バッファの内容を画面に出力する前にabortすることがあるため、この関数はデバッグ情報を出力する際に役立つ。flush()はすべてのデバッグ情報が確実に出力されるように注意深く使用する必要がある。
関連トピック:streamsize gcount(); |
この関数は入力ストリームに対して使用し、最後の入力操作で何文字読み込んだかという情報を返す。
関連トピック:int get(); istream &get( char &文字 ); istream &get( char *バッファ, streamsize 文字数 ); istream &get( char *バッファ, streamsize 文字数, char 境界文字 ); istream &get( streambuf &バッファ ); istream &get( streambuf &バッファ, char 境界文字 ); |
get()関数は入力ストリームに対して、以下の使用法で使用される:
char ch;
ifstream fin( "temp.txt" );
while( fin.get(ch) )
cout << ch;
fin.close();
関連トピック:istream &getline( char *バッファ, streamsize 文字数 ); istream &getline( char *バッファ, streamsize 文字数, char 境界文字 ); |
getline()関数は入力ストリームに対して使用し、以下の条件に合うまでバッファ に文字列を読み込む:
bool good(); |
現在のストリームにエラーが発生していない場合にtrueを返す。 そうでない場合にはfalseを返す。
関連トピック:istream &ignore( streamsize 文字数=1, int 境界文字=EOF ); |
ignore()関数は入力ストリームに対して使用する。 この関数は文字数 (デフォルトは1文字)分の文字か、境界文字 (デフォルトはEOF)を読み込むまでのストリームの内容を読み捨てる。
関連トピック:void open( const char *ファイル名 ); void open( const char *ファイル名, openmode モード ); |
open()はファイルストリームに対して使用する。ファイル名 で指定したファイルを開き、現在のストリームに関連づける。モード オプションで以下のように指定することができる:
| モード | 意味 |
|---|---|
| ios::app | 追加出力 |
| ios::ate | 開く時にEOFまで移動する |
| ios::binary | ファイルをバイナリモードで開く |
| ios::in | 読み込み専用で開く |
| ios::out | 出力用にファイルを開く |
| ios::trunc | 既存のファイルを上書きする |
open()が失敗すると、そのストリームはBooleanとして解釈される文脈ではfalseとして評価される:
ifstream inputStream("file.txt");
if( !inputStream ) {
cerr << "入力ストリームを開けませんでした" << endl;
return;
}
関連トピック:int peek(); |
peek()は入力ストリームに対して使用し、次の文字かEOF(ファイルの最後にある場合)を読み込む。peek()はストリームから文字を削除することはない。
関連トピック:streamsize precision(); streamsize precision( streamsize 精度 ); |
precision()関数は浮動小数点数を表示する時の精度を設定したり返したりする。
float num = 314.15926535;
cout.precision( 5 );
cout << num;
displays
314.16
関連トピック:ostream &put( char 文字 ); |
put()は出力ストリームに対して使用し、文字 をストリームに書き出す。
関連トピック:istream &putback( char 文字 ); |
putback()関数は入力ストリームに対して使用し、以前読み込んだ文字 を入力ストリームに書き戻す。
関連トピック:iostate rdstate(); |
rdstate()は現在のストリームの状態を返す。iostateは以下のようなフラグを持つ:
| フラグ | 意味 |
|---|---|
| badbit | 致命的なエラーが発生 |
| eofbit | EOFに到達 |
| failbit | 致命的ではないエラーが発生 |
| goodbit | エラーは発生していない |
関連トピック:
eof(),
good(),
bad(),
clear(),
fail()
istream &read( char *バッファ, streamsize バイト数 ); |
read()は入力ストリームに対して使用し、バイト数 分をストリームから読み込んでバッファ に書き出す。EOFに到達したらread()の処理は中止され、残りの文字数は入力時のバッファ の内容がそのまま残る:
struct {
int height;
int width;
} rectangle;
input_file.read( (char *)(&rectangle), sizeof(rectangle) );
if( input_file.bad() ) {
cerr << "読み込みエラー" << endl;
exit( 0 );
}
関連トピック:istream &seekg( off_type オフセット, ios::seekdir 開始位置 ); istream &seekg( pos_type 位置 ); |
seekg()は入力ストリームに対して使用される。この関数は現在のストリームの"読み込み"位置を開始位置 からオフセット バイト分移動した位置か、位置 で指定された場所まで移動する。
関連トピック:istream &seekp( off_type オフセット, ios::seekdir 開始位置 ); istream &seekp( pos_type 位置 ); |
seekp()関数は出力ストリームに対して使用する。この関数はseekg()とよく似ている。
関連トピック:fmtflags setf( fmtflags フラグ ); fmtflags setf( fmtflags フラグ, fmtflags 追加オプション ); |
setf()は現在のストリームの書式フラグをフラグ に設定する。追加オプション はフラグ が追加オプション を必要とする場合にのみ設定する。返値は以前の設定値である:
int number = 0x3FF;
cout.setf( ios::dec );
cout << "10進数: " << number << endl;
cout.unsetf( ios::dec );
cout.setf( ios::hex );
cout << "16進数: " << number << endl;
このコードは以下のようなコードと機能的には同じである。
int number = 0x3FF;
cout << "10進数: " << number << endl << hex << "16進数: " << number << dec << endl;
この書き方についてはマニピュレータを参照。
関連トピック:static bool sync_with_stdio( bool 同期する=true ); |
sync_with_stdio()関数は、C++の入出力とCの入出力の同期をとるかどうかを設定する。
pos_type tellg(); |
tellg()関数は入力ストリームに対して使用し、ストリーム内の現在の読み込み位置を返す。
関連トピック:pos_type tellp(); |
tellp()関数は出力ストリームに対して使用し、ストリーム内の現在の書き込み位置を返す。以下のコードはデータを出力する際にファイル内のポインタを返す。以下のサンプルコードではストリームに書き出すたびにファイル内のポインタを表示する:
string s("桃源郷の中でフビライ=ハンが...");
ofstream fout("output.txt");
for( int i=0; i < s.length(); i++ ) {
cout << "ファイルポインタ: " << fout.tellp();
fout.put( s[i] );
cout << " " << s[i] << endl;
}
fout.close();
関連トピック:void unsetf( fmtflags フラグ ); |
unsetf()関数は現在のストリームのフラグ をクリアするのに使用する。 フラグとは何か?
関連トピック:int width(); int width( int 幅 ); |
width()関数は現在の幅を返す。幅 オプションを指定すると、 幅を設定することができる。幅は、それぞれの出力を表示する際の最低の文字数を定義するものである。サンプル:
cout.width( 5 );
cout << "2";
表示内容
2
('2'のあとに4つのスペース)
関連トピック:ostream &write( const char *バッファ, streamsize 文字数 ); |
write()関数は出力ストリームに対して使用し、 バッファ の中の文字数 バイトのデータを現在の出力ストリームに送る。
関連トピック: