01 | #include <iostream> |
02 | #include <fstream> |
03 |
04 | typedef unsigned int uint; |
05 | const char *fname = "C:/hoge/piyo.txt" ; //ファイルパス |
06 |
07 | int main() |
08 | { |
09 | using namespace std; |
10 |
11 | ifstream fs(fname); //ファイルオープン。読み込み形式は指定なしのときはテキストモードになる。 |
12 |
13 | fs.seekg(0, fstream::end); //ファイル末尾を探す |
14 | uint eofPos = fs.tellg(); //ファイル末尾インデクスを取得 |
15 |
16 | fs.clear(); //先頭にもどるために一度clear()をかける。これをしないと次のseekg()でコケるときがある。 |
17 |
18 | fs.seekg(0, fstream::beg); //ファイル先頭に戻る |
19 | uint begPos = fs.tellg(); //ファイル先頭インデクスを取得 |
20 |
21 | uint size = eofPos - begPos; //末尾-先頭でファイルサイズを計算 |
22 |
23 | char *buf = new char [ size ]; //サイズ分の領域を確保 |
24 | memset (buf, 0, size); //0クリアしておく |
25 |
26 | fs.read(buf, size); //ファイル先頭からバッファへコピー |
27 |
28 | fs.close(); //ファイルを明示的に閉じてみる |
29 |
30 | cout << buf << endl; //確認のため出力 |
31 |
32 | SAFE_DELETE_ARRAY(buf); //バッファを削除 |
33 | return 0; |
34 | } |
例外処理も入れるべきだが、使い方を間違えると正しく読み込めているのに例外が送出されてしまうので注意。
下記のリストに挙げた『std::ifstream::read()の使い方がツライ』の記事を参考されたい。
参考
0 件のコメント:
コメントを投稿