VC++ファイル操作の「取得ファイルサイズ」と「読み取りファイル」
1475 ワード
本文はそれぞれ以下の2つのブログから転載した.
C++読み取りファイルの詳細
Windowsでファイルサイズを取得する4つの方法
ここでは、純粋なc++取得ファイルのサイズとバイナリファイルの読み取りについて説明します.
バイナリファイルでは、<と>>や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、まずファイルをバイナリで開き、getストリームポインタの位置をファイルの末尾に設定します.ios::ate;
2、tellg関数を調整して、ストリームポインタの位置、すなわちファイルサイズの値を知る.
また、C++Reference:クリックしてリンクを開き、入出力ストリームの紹介とブログ:C++のIOクラスのまとめについて
C++読み取りファイルの詳細
Windowsでファイルサイズを取得する4つの方法
ここでは、純粋なc++取得ファイルのサイズとバイナリファイルの読み取りについて説明します.
バイナリファイルでは、<と>>やgetlineなどの関数を使用してデータの入力と出力を操作します.文法に合致していますが、実際の意味はありません.ファイル・ストリームには、writeとreadの2つの順序読み書きデータの特殊な設計のメンバー関数が含まれます.最初の関数(write)はostreamのメンバー関数であり、ofstreamによって継承されます.readはistreamのメンバー関数であり、ifstreamによって継承されます.クラスfstreamのオブジェクトには、この2つの関数が同時に存在します.それらの原型はwrite(char*buffer,streamsize size);read ( char * buffer, streamsize size ); ここでbufferは、データを格納または読み出すためのメモリのアドレスです.パラメータsizeは、キャッシュから読み出す文字または書き込む文字数を表す整数値です.
[cpp] view plain copy print?
// reading binary file
#include <iostream>
#include <fstream.h>
const char * filename = "test.txt";
int main () {
char * buffer;
long size;
ifstream in (filename, ios::in|ios::binary|ios::ate);
size = in.tellg();
in.seekg (0, ios::beg);
buffer = new char [size];
in.read (buffer, size);
in.close();
cout << "the complete file is in a buffer";
delete[] buffer;
return 0;
}
// :
The complete file is in a buffer
上記のコードでファイルサイズを計算する方法は、次のとおりです.
1、まずファイルをバイナリで開き、getストリームポインタの位置をファイルの末尾に設定します.ios::ate;
2、tellg関数を調整して、ストリームポインタの位置、すなわちファイルサイズの値を知る.
また、C++Reference:クリックしてリンクを開き、入出力ストリームの紹介とブログ:C++のIOクラスのまとめについて