c++:ファイルの読み込み

本物のページはこちら→fileread

一覧表

ファイル作成 読み 書き 閉じる 既存ファイルクリア
WinAPI CreateFile ReadFile WriteFile CloseHandle(HANDLE) TRUNCATE_EXISTING
c++ STL ifstream.open(\"ファイル名\",ios::in);  ifstream ofstream 変数名.close() ios::trunc
ifstream fin("ファイル名");
c FILE read,fread write fclose(変数名)  デフォルトでok
MFCのCFile stdFile.Open(_T(\"パス\"),read or write)) Read() Write() 変数.Close(); modeCreate

バイナリ読み

fstream ifs;
ifs.open("input.data",ios::binary);
ifs.read((char*)datapointer,numofread);
ifs.close();

ifs.readsomeが便利らしい。このビットを見つけたら、ストップ、みたいなことが出来るみたい。

ファイルを最後まで一気に読む

ifstream is("shader.vert",ios::ate);//ate::ファイルを開くときにファイルポインタを末尾にした状態にする
    int length = is.tellg();
    is.seekg(0, is.beg);//ファイルポインタを最初に戻す
    char * buffer = new char[length];
    is.read(buffer, length);
    is.close();

int分読む

ifstream ifs("input.txt",ios_base::in);
int a;
ifs>>a;

構造体にファイルを読む

ifs.read(reinterpret_cast<char *>(&構造体変数名),sizeof(構造体));

テキストファイルの場合

1行読み 1行書き 数値変数に読み込む 長所 短所
MFCのCStdioFile stdFile.Open(_T(\"パス\"),read or write)) ReadString() strに読み込んでからformat() setllcaleしないと日本語書き込めない
c fgets() fscanf() charしかだめ。stringむり
c++ getline() writeline() »演算子 string ok

1行読む

テキストファイルを一行ずつ読み込んで表示するプログラム。
getlineはchar型に入るのが不便。しかも''で終わってない。

#include <fstream> 
string line;
     ifstream ifs;
     int count=0;
    ifs.open(FILENAME, ios::in); //読み取り専用で開く
     while(ifs.good()){//!if.eof()でもいい
        getline(ifs,line);//ifs.getline(line, sizeof(line));//読みこ先がchar配列だったらこうする
        printf("[%03d] %s¥n", count, line);
        count++;
    }
   ifs.close();

演算子を使う方法。(string型へ、にも読み込める。)

これが一番便利な気がする。

#include <string>
#include <fstream>
#include <iostream>
ifstream ifs;
string str;
ifs >> str;

なぜか空白まで区切って読み込んでくれる。
setf(ios::dec,ios::basefield);
とかで色々設定できる

いっぺんに何文字か読む

freadでcharを読むのが良い

FILE* fp;
const int readnum=100;//読みたい文字数。\"\n\"もカウントされるので注意。
char buf[readnum+1];//freadで読んだ場合、最後の\"\"印はつけてくれないので自分で加える必要がある。fp=fopen(\"data.txt\",\"r\");\nfread(buf,sizeof(char),readnum,fp);\nbuf[readnum]='';\nprintf(\"%s\n\",buf);//\nfclose(fp);

1文字読む

fgetcやgetcで一文字ずつ読む。

一覧表

ファイル作成 読み 書き 閉じる 既存ファイルクリア
WinAPI CreateFile ReadFile WriteFile CloseHandle(HANDLE) TRUNCATE_EXISTING
c++ STL ifstream.open(\"ファイル名\",ios::in);  ifstream ofstream 変数名.close() ios::trunc
ifstream fin("ファイル名");
c FILE read,fread write fclose(変数名)  デフォルトでok
MFCのCFile stdFile.Open(_T(\"パス\"),read or write)) Read() Write() 変数.Close(); modeCreate

バイナリ読み

fstream ifs;
ifs.open("input.data",ios::binary);
ifs.read((char*)datapointer,numofread);
ifs.close();

ifs.readsomeが便利らしい。このビットを見つけたら、ストップ、みたいなことが出来るみたい。

ファイルを最後まで一気に読む

ifstream is("shader.vert",ios::ate);//ate::ファイルを開くときにファイルポインタを末尾にした状態にする
    int length = is.tellg();
    is.seekg(0, is.beg);//ファイルポインタを最初に戻す
    char * buffer = new char[length];
    is.read(buffer, length);
    is.close();

int分読む

ifstream ifs("input.txt",ios_base::in);
int a;
ifs>>a;

構造体にファイルを読む

ifs.read(reinterpret_cast<char *>(&構造体変数名),sizeof(構造体));

テキストファイルの場合

1行読み 1行書き 数値変数に読み込む 長所 短所
MFCのCStdioFile stdFile.Open(_T(\"パス\"),read or write)) ReadString() strに読み込んでからformat() setllcaleしないと日本語書き込めない
c fgets() fscanf() charしかだめ。stringむり
c++ getline() writeline() »演算子 string ok

1行読む

テキストファイルを一行ずつ読み込んで表示するプログラム。
getlineはchar型に入るのが不便。しかも''で終わってない。

#include <fstream> 
string line;
     ifstream ifs;
     int count=0;
    ifs.open(FILENAME, ios::in); //読み取り専用で開く
     while(ifs.good()){//!if.eof()でもいい
        getline(ifs,line);//ifs.getline(line, sizeof(line));//読みこ先がchar配列だったらこうする
        printf("[%03d] %s¥n", count, line);
        count++;
    }
   ifs.close();

演算子を使う方法。(string型へ、にも読み込める。)

これが一番便利な気がする。

#include <string>
#include <fstream>
#include <iostream>
ifstream ifs;
string str;
ifs >> str;

なぜか空白まで区切って読み込んでくれる。
setf(ios::dec,ios::basefield);
とかで色々設定できる

いっぺんに何文字か読む

freadでcharを読むのが良い

FILE* fp;
const int readnum=100;//読みたい文字数。\"\n\"もカウントされるので注意。
char buf[readnum+1];//freadで読んだ場合、最後の\"\"印はつけてくれないので自分で加える必要がある。fp=fopen(\"data.txt\",\"r\");\nfread(buf,sizeof(char),readnum,fp);\nbuf[readnum]='';\nprintf(\"%s\n\",buf);//\nfclose(fp);

1文字読む

fgetcやgetcで一文字ずつ読む。

サポートサイト Wikidot.com