cppreference.com -> C++入出力 -> 詳細

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();

ファイルの入出力のストリームはあらかじめ定義された入出力ストリームである cincoutと同じように使用することができる。

関連トピック:
close(), open()

bad

文法:

  bool bad();

現在のストリームに致命的なエラーが発生した場合にtrueを返す。 そうでない場合にはfalseを返す。

関連トピック:
good()

clear

文法:

  void clear( iostate フラグ = goodbit );

現在のストリームに関連づけられたフラグをクリアする。 デフォルトのフラグはgoodbit(異常なし)で、すべてのフラグがクリアされる。 そうでない場合は指定されたフラグ のみをクリアする。

関連トピック:
rdstate()

close

文法:

  void close();

ファイルに関連づけられたストリームを閉じる。

関連トピック:
open()

eof

文法:

  bool eof();

関連づけられたファイルの最後に達した場合にtrueを返す。 そうでない場合にはfalseを返す。 サンプル:

    char ch;
    ifstream fin( "temp.txt" );
    while( !fin.eof() ) {
      fin >> ch;
      cout << ch;
    }
    fin.close();
関連トピック:
bad(), fail(), good(), rdstate(), clear()

fail

文法:

  bool fail();

現在のストリームにエラーが発生した場合にtrueを返す。 そうでない場合にはfalseを返す。

関連トピック:
good(), eof(), bad(), clear(), rdstate()

fill

文法:

  char fill();
  char fill( char 文字 );

fill()は現在の詰め物文字を返す。 あるいは現在の詰め物文字を文字 に指定された文字に設定する。 詰め物文字はwidthで定義された文字数よりも少ない場合に 空白を埋める文字として使用される。デフォルトの詰め物文字は空白である。

関連トピック:
precision(), width()

flags

文法:

  fmtflags flags();
  fmtflags flags( fmtflags フラグ );

flags()関数は現在のストリームの書式フラグ を返す。あるいは、現在のストリームの書式フラグをフラグ に設定する。

関連トピック:
unsetf(), setf()

flush

文法:

  ostream &flush();

flush()関数は現在の出力ストリームのバッファの内容を、出力デバイスに書き込む。 出力バッファの内容を画面に出力する前にabortすることがあるため、この関数はデバッグ情報を出力する際に役立つ。flush()はすべてのデバッグ情報が確実に出力されるように注意深く使用する必要がある。

関連トピック:
put(), write()

gcount

文法:

  streamsize gcount();

この関数は入力ストリームに対して使用し、最後の入力操作で何文字読み込んだかという情報を返す。

関連トピック:
get(), getline(), read()

get

文法:

  int get();
  istream &get( char &文字 );
  istream &get( char *バッファ, streamsize 文字数 );
  istream &get( char *バッファ, streamsize 文字数, char 境界文字 );
  istream &get( streambuf &バッファ );
  istream &get( streambuf &バッファ, char 境界文字 );

get()関数は入力ストリームに対して、以下の使用法で使用される:

例えば、以下のコードはtemp.txtの内容を一文字ずつ表示する:

    char ch;
    ifstream fin( "temp.txt" );
    while( fin.get(ch) )
      cout << ch; 
    fin.close();
関連トピック:
put(), read(), getline()

getline

文法:

  istream &getline( char *バッファ, streamsize 文字数 );
  istream &getline( char *バッファ, streamsize 文字数, char 境界文字 );

getline()関数は入力ストリームに対して使用し、以下の条件に合うまでバッファ に文字列を読み込む:

関連トピック:
get(), read()

good

文法:

  bool good();

現在のストリームにエラーが発生していない場合にtrueを返す。 そうでない場合にはfalseを返す。

関連トピック:
bad(), fail(), eof(), clear(), rdstate()

ignore

文法:

  istream &ignore( streamsize 文字数=1, int 境界文字=EOF );

ignore()関数は入力ストリームに対して使用する。 この関数は文字数 (デフォルトは1文字)分の文字か、境界文字 (デフォルトはEOF)を読み込むまでのストリームの内容を読み捨てる。

関連トピック:
get(), getline()

open

文法:

  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;
  }
関連トピック:
close(), fstream(), ifstream(), ofstream(),

peek

文法:

  int peek();

peek()は入力ストリームに対して使用し、次の文字かEOF(ファイルの最後にある場合)を読み込む。peek()はストリームから文字を削除することはない。

関連トピック:
get(), putback()

precision

文法:

  streamsize precision();
  streamsize precision( streamsize 精度 );

precision()関数は浮動小数点数を表示する時の精度を設定したり返したりする。

    float num = 314.15926535;
    cout.precision( 5 );
    cout << num;

displays

    314.16
関連トピック:
width(), fill()

put

文法:

  ostream &put( char 文字 );

put()は出力ストリームに対して使用し、文字 をストリームに書き出す。

関連トピック:
write(), get()

putback

文法:

  istream &putback( char 文字 );

putback()関数は入力ストリームに対して使用し、以前読み込んだ文字 を入力ストリームに書き戻す。

関連トピック:
peek()

rdstate

文法:

  iostate rdstate();

rdstate()は現在のストリームの状態を返す。iostateは以下のようなフラグを持つ:

フラグ意味
badbit致命的なエラーが発生
eofbitEOFに到達
failbit致命的ではないエラーが発生
goodbitエラーは発生していない

関連トピック:
eof(), good(), bad(), clear(), fail()


read

文法:

  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 );
    }
関連トピック:
gcount(), get(), getline(), write()

seekg

文法:

  istream &seekg( off_type オフセット, ios::seekdir 開始位置 );
  istream &seekg( pos_type 位置 );

seekg()は入力ストリームに対して使用される。この関数は現在のストリームの"読み込み"位置を開始位置 からオフセット バイト分移動した位置か、位置 で指定された場所まで移動する。

関連トピック:
seekp(), tellg(), tellp()

seekp

文法:

  istream &seekp( off_type オフセット, ios::seekdir 開始位置 );
  istream &seekp( pos_type 位置 );

seekp()関数は出力ストリームに対して使用する。この関数はseekg()とよく似ている。

関連トピック:
seekg(), tellg(), tellp()

setf

文法:

  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;

この書き方についてはマニピュレータを参照。

関連トピック:
flags(), unsetf()

sync_with_stdio

文法:

  static bool sync_with_stdio( bool 同期する=true );

sync_with_stdio()関数は、C++の入出力とCの入出力の同期をとるかどうかを設定する。


tellg

文法:

  pos_type tellg();

tellg()関数は入力ストリームに対して使用し、ストリーム内の現在の読み込み位置を返す。

関連トピック:
seekg(), seekp(), tellp()

tellp

文法:

  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();
関連トピック:
seekg(), seekp(), tellg()

unsetf

文法:

  void unsetf( fmtflags フラグ );

unsetf()関数は現在のストリームのフラグ をクリアするのに使用する。 フラグとは何か?

関連トピック:
setf(), flags()

width

文法:

  int width();
  int width( int 幅 );

width()関数は現在の幅を返す。 オプションを指定すると、 幅を設定することができる。幅は、それぞれの出力を表示する際の最低の文字数を定義するものである。サンプル:

    cout.width( 5 );
    cout << "2";

表示内容

        2

('2'のあとに4つのスペース)

関連トピック:
precision(), fill()

write

文法:

  ostream &write( const char *バッファ, streamsize 文字数 );

write()関数は出力ストリームに対して使用し、 バッファ の中の文字数 バイトのデータを現在の出力ストリームに送る。

関連トピック:
read(), put()