出力ファイル ストリームのメンバー関数
出力ストリームのメンバー関数の 3 種類があります : マニピュレーターに相当し書式設定されていない書き込み操作が実行されると他にストリームの状態を変更し同等のマニピュレーターまたは出力ストリーム演算子があるかどうかを示します。順次では書式付き出力出力ストリーム演算子とマニピュレーターのみ使用することがあります。ランダムなディスク アクセスバイナリの出力は出力ストリーム演算子を使用せずに他のメンバー関数を使用します。
出力ストリームに開いた関数
出力ファイル ストリーム ()ofstream を使用するにはコンストラクターまたは 開く の関数の特定のディスク ファイルとそのストリームを関連付ける必要があります。 開く の関数を使用すると一連のファイルを使用して同じストリーム オブジェクトを再利用できます。いずれの場合もファイルを説明する引数は同じです。
出力ストリームに関連付けられたファイルを開く場合に open_mode のフラグを指定します。の ios クラスの列挙子と(ビットごとに定義されたこれらのフラグを組み合わせることができます。| 演算子)。列挙子のリストについては ios_base:: openmode を参照してください。
3 個の共通出力ストリームの状況ではオプションです :
ファイルの作成。ファイルが既に存在する場合古いバージョンが削除されます。
ostream ofile( "FILENAME" ); // Default is ios::out ofstream ofile( "FILENAME", ios::out ); // Equivalent to above
あるレコードを既存のファイルまたは 1 を作成することに追加します。
ofstream ofile( "FILENAME", ios::app );
同じストリームの 2 という二つのファイルを一つずつ開きます。
ofstream ofile(); ofile.open( "FILE1", ios::in ); // Do some output ofile.close(); // FILE1 closed ofile.open( "FILE2", ios::in ); // Do some more output ofile.close(); // FILE2 closed // When ofile goes out of scope it is destroyed.
された関数
配置 の関数は出力ストリームに 1 文字を書き込みます。次の 2 種類のステートメントは既定ではですが2 番目はストリーム引数 format によって影響を受ける :
cout.put( 'A' ); // Exactly one character written
cout << 'A'; // Format arguments 'width' and 'fill' apply
関数の作成
書き込み の関数は出力ファイル ストリームにメモリ ブロックを作成します。長さの引数は書き込んだバイト数を指定します。この例では出力ファイル ストリームを作成して Date の構造のバイナリ値を書き込みます :
// write_function.cpp
// compile with: /EHsc
#include <fstream>
using namespace std;
struct Date
{
int mo, da, yr;
};
int main( )
{
Date dt = { 6, 10, 92 };
ofstream tfile( "date.dat" , ios::binary );
tfile.write( (char *) &dt, sizeof dt );
}
書き込み の関数は null 文字になるため完全なクラス構造が書き込まれますと停止しません。関数は 2 個の引数を受け取ります : 文字の char のポインターを書き込む数。char* に必要なキャストにあらかじめ構造オブジェクトのアドレスに注意してください。
seekp と tellp の関数
出力ファイル ストリームにデータは次に書き込まれる場所を指す内部ポインターを保持します。seekp のメンバー関数はこのポインターを設定するためランダム アクセスディスクファイルで出力を提供します。tellp のメンバー関数はファイルの位置を返します。seekp と tellp に入力ストリームの同等の使用例についてはseekg と tellg の関数 を参照してください。
出力ストリームの終了関数
閉じる のメンバー関数は出力ファイル ストリームに関連付けられているディスク ファイルを閉じます。ファイルはすべてのディスクの出力を完了するために閉じる必要があります。必要に応じてofstream のデストラクターを使用するとファイルを閉じます同じストリーム オブジェクトに対して別ファイルを開く必要がある場合 閉じる の関数を使用します。
出力ストリームのデストラクターは自動的にコンストラクターまたは 開く のメンバー関数がファイルを開いたときだけストリーム ファイルを閉じます。コンストラクターに既に開いているファイルへのファイル記述子を渡したり アタッチ のメンバー関数を使用するとファイルを明示的に終了する必要があります。
関数を処理するエラー
ストリームに書き込むときにエラーをテストするためにこれらのメンバー関数の使用 :
Function |
戻り値 |
---|---|
回復不能なエラーがある場合 true を返します。 |
|
回復不能なエラーまたは 「」状態が変換エラーなどのかファイルが存在しない場合 true を返します。処理はゼロと引数の クリア の呼び出し後に再開できます。 |
|
エラー条件 (またはそのほか) せずを返します true 回復できないファイルの終端のフラグは設定されません。 |
|
EOF が見つかりました。状態の true を返します。 |
|
内部エラーの状態を設定します。既定の引数があった場合すべてのエラーのビットをオフにします。 |
|
現在のエラー状態を返します。 |
! の演算子は 失敗 の関数と同じ機能を実行するためにオーバーロードされます。この式 :
if( !cout)...
上の式は、下の式と同等です。
if( cout.fail() )...
void* () の演算子は ! 演算子のオブジェクトであるためにオーバーロードされます ; この式 :
if( cout)...
と等価です :
if( !cout.fail() )...
void* () の演算子はファイルの終端のようにDFA エンジン 優れた と同じではありません。