C 讀寫檔案

2021-08-09 08:03:49 字數 1591 閱讀 3117

c++檔案流的標頭檔案為,對應的類有3個:

std::fstream // 檔案流,由iostream派生而來,用於讀寫檔案

std::ifstream // 輸入檔案流,由istream派生而來, 用於讀檔案

std::ofstream // 輸出檔案流,由ostream派生而來,用於寫檔案

方案一:使用get()一次讀乙個字元

#include 

#include

int main()

char c;

while((c=fin.get())!=eof) //注意結束條件的判斷

方案二:使用get(char *,int n,char delim=』\n』)一次讀多個字元

#include 

#include

void main()

char c[80];

while(fin.get(c,80,'\0')!=null) //注意結束條件的判斷

char c[80];

while(!fin.eof()) //判斷檔案是否讀結束

fin.close();

}

#include 

#include

void main()

std::ofstream fout("d:\\a2.data", std::ios::binary);

char c[1024];

while(!fin.eof())

fin.close();

fout.close();

std::cout

<<"copy over!\n";

}

注意,如果檔案路徑或者檔名稱包含中文,需要特殊處理,如下:

#include 

std:

:locale

::global(std:

:locale("")); //將全域性區域設為作業系統預設區域

std:

:ifstream fin("d:\\測試.txt");

std:

:locale

::global(std:

:locale("c")); //還原全域性區域設定

原因為:

在呼叫ifstream的open方法時,系統內部呼叫mbstowcs_s進行檔名轉換(mbstowcs_s函式的作用是把多位元組字元轉化為寬字元),需要注意的是,該函式的呼叫結果依賴於程式的本地化設定(什麼是本地化設定?)。而本地化設定可以通過setlocale函式來設定,譬如:setlocale(lc_all, 「chinese」)表示將程式本身的語言設定為中文,而程式啟動時預設設定為lc_all=」c」。在使用mbstowcs_s進行字串轉換時,只有當lc_all=」chinese」時,含中文的字串才能正確的轉換成其對應的寬位元組字元,否則(在lc_all=」c」時),漢字會被看成2個單位元組的字元,然後再轉換成寬位元組的字元,這樣轉換的結果顯然是錯誤的!這就是ifstream開啟含中文路徑的檔案失敗的原因,因為」d:\測試.txt」轉換後得到錯誤的路徑,因此檔案打不開!

c 檔案讀寫 文字讀寫

include int main else return 0 格式 intfscanf file stream,constchar format,返回值 如果成功,該函式返回成功匹配和賦值的個數。如果到達檔案末尾或發生讀錯誤,則返回 eof 引數1 file stream 檔案指標 引數2 cons...

C 檔案讀寫

原文 http www.vckbase.com document viewdoc id 1439 原作 john peregrine file i o using c 序論 我曾發表過檔案輸入輸出的文章,現在覺得有必要再寫一點。檔案 i o 在c 中比烤蛋糕簡單多了。在這篇文章裡,我會詳細解釋asc...

C 讀寫檔案

1 使用filestream讀寫檔案 檔案頭 using system using system.collections.generic using system.text using system.io 讀檔案核心 byte bydata new byte 100 char chardata ne...