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...