C++ファイル操作関数の詳細
C++以下のクラスサポートファイルからの入出力
(1)ofstream:書き込み操作、出力ファイルクラス;
(2)ifstream:読み取り操作、ファイルクラスの入力;
(3)fstream:同時読み書き可能なファイルクラス.
1.open関数:ファイルを開く
関数プロトタイプ:void open(const char*filename,int mode,int access);
パラメータの説明:filename:開くファイル名mode:ファイルを開く方法access:ファイルを開くプロパティ
ファイルを開く方法はクラスios(すべてのフローI/Oクラスのベースクラス)で定義されます.一般的な値は、ios::app:ファイルios::ate:ファイルを追加で開く.ios:appには、この属性ios::binary:ファイルをバイナリで開く.デフォルトはテキストです.2つの方法の違いは、前文ios::in:ファイルを入力でios::out:ファイルを出力でios::nocreate:ファイルを作成しないため、ファイルが存在しない場合は失敗ios::noreplace:ファイルを上書きしないため、ファイルを開く場合は失敗ios::trunc:ファイルが存在する場合、ファイル長を0にすると、ios::out|ios::binaryでファイルを開くプロパティの値は:0:一般ファイル、開くアクセス1:読み取り専用ファイル2:隠しファイル4:システムファイル例えば:バイナリ入力方式でファイルを開くc:config.sys fstreamfile1; file1.open("c:\\config.sys",ios::binary|ios::in,0);
ofstream file; file.open ("example.bin", ios::out |ios::app | ios::binary);
2.close関数
関数プロトタイプ:void close()
3.バイナリファイル(Binary files)
バイナリファイルでは、<と>>やgetlineなどの関数を使用してデータの入力と出力を操作します.文法に合致していますが、実際の意味はありません.
ファイル・ストリームには、writeとreadの2つの順序読み書きデータの特殊な設計のメンバー関数が含まれます.最初の関数(write)はostreamのメンバー関数であり、ofstreamによって継承されます.readはistreamのメンバー関数であり、ifstreamによって継承されます.クラスfstreamのオブジェクトには、この2つの関数が同時に存在します.プロトタイプは次のとおりです.
write ( char *buffer, streamsize size ); read ( char * buffer, streamsize size );
ここでbufferは、データを格納または読み出すためのメモリのアドレスです.パラメータsizeは、キャッシュから読み出す文字または書き込む文字数を表す整数値です.
(1)ofstream:書き込み操作、出力ファイルクラス;
(2)ifstream:読み取り操作、ファイルクラスの入力;
(3)fstream:同時読み書き可能なファイルクラス.
1.open関数:ファイルを開く
関数プロトタイプ:void open(const char*filename,int mode,int access);
パラメータの説明:filename:開くファイル名mode:ファイルを開く方法access:ファイルを開くプロパティ
ファイルを開く方法はクラスios(すべてのフローI/Oクラスのベースクラス)で定義されます.一般的な値は、ios::app:ファイルios::ate:ファイルを追加で開く.ios:appには、この属性ios::binary:ファイルをバイナリで開く.デフォルトはテキストです.2つの方法の違いは、前文ios::in:ファイルを入力でios::out:ファイルを出力でios::nocreate:ファイルを作成しないため、ファイルが存在しない場合は失敗ios::noreplace:ファイルを上書きしないため、ファイルを開く場合は失敗ios::trunc:ファイルが存在する場合、ファイル長を0にすると、ios::out|ios::binaryでファイルを開くプロパティの値は:0:一般ファイル、開くアクセス1:読み取り専用ファイル2:隠しファイル4:システムファイル例えば:バイナリ入力方式でファイルを開くc:config.sys fstreamfile1; file1.open("c:\\config.sys",ios::binary|ios::in,0);
ofstream file; file.open ("example.bin", ios::out |ios::app | ios::binary);
2.close関数
関数プロトタイプ:void close()
3.バイナリファイル(Binary files)
バイナリファイルでは、<と>>やgetlineなどの関数を使用してデータの入力と出力を操作します.文法に合致していますが、実際の意味はありません.
ファイル・ストリームには、writeとreadの2つの順序読み書きデータの特殊な設計のメンバー関数が含まれます.最初の関数(write)はostreamのメンバー関数であり、ofstreamによって継承されます.readはistreamのメンバー関数であり、ifstreamによって継承されます.クラスfstreamのオブジェクトには、この2つの関数が同時に存在します.プロトタイプは次のとおりです.
write ( char *buffer, streamsize size ); read ( char * buffer, streamsize size );
ここでbufferは、データを格納または読み出すためのメモリのアドレスです.パラメータsizeは、キャッシュから読み出す文字または書き込む文字数を表す整数値です.
// reading binary file
#include <iostream>
#include <fstream.h>
const char * filename = "example.txt";
int main () {
char * buffer;
long size;
ifstream file (filename, ios::in|ios::binary|ios::ate);
size = file.tellg();
file.seekg (0, ios::beg);
buffer = new char [size];
file.read (buffer, size);
file.close();
cout << "the complete file is in a buffer";
delete[] buffer;
return 0;
}
き みの : // writing on a text file
#include <fiostream.h>
int main () {
ofstream examplefile ("example.txt");
if (examplefile.is_open()) {
examplefile << "This is a line.
";
examplefile << "This is another line.
";
examplefile.close();
}
return 0;
}
ファイルの み み // reading a text file
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
int main () {
char buffer[256];
ifstream examplefile ("example.txt");
if (! examplefile.is_open())
{ cout << "Error opening file"; exit (1); }
while (! examplefile.eof() ) {
examplefile.getline (buffer,100);
cout << buffer << endl;
}
return 0;
}
C++ ファイル #include <fstream>
#include <iostream>
using namespace std;
int main()
{
const int SZ=100;
char buf[SZ];
{
ifstream in;
in.open("example.cpp",ios::in);
ofstream out;
out.open("example.out");
int j=1;
while(in.get(buf,SZ))
{
in.get();
cout<<buf<<endl;
out<<j++<<":"<<buf<<endl;
}
}
ifstream in("example.out");
while(in.getline(buf,SZ))
{
char *cp=buf;
while(*cp!=':')
{
++cp;
}
cp+=2;
cout<<cp<<endl;
}
system("pause");
return 0;
}