標題:
C++ 幫我寫個存檔和讀檔的範例
發問:
我想知道怎麼用C++存檔和讀取資料 我看過一些例子 可是還是不清楚 可以寫一個範例跟註解給我嘛 更新: 我一開始是學哈電族NC系列程式 下面說的存檔跟讀檔以前有學過所以知道怎麼使用 只是不知道要用哪些標頭跟( )中的意思 以前我還有學到一個指令 就是它會先讀有沒有這個檔案DAT 如果有的話它不會覆蓋掉 如果沒有的話 做一個空白的檔案DAT 不知道C++有沒有這個指令
最佳解答:
// 範例:讀檔與寫檔,讀取 in.txt 的內容並寫入至 out.txt 中 // 請 #include
及 using namespace std; ifstream in("in.txt", ifstream::binary); // 讀檔,指定檔名為 in.txt,路徑為執行檔所在且檔案必須存在 ofstream out("out.txt", ofstream::binary | ofstream::trunc); // 寫檔,指定檔名為 out.txt,路徑為執行檔所在,若檔案已存在則覆蓋 (因為 ofstream::trunc 參數) in.seekg(0, ifstream::end); // 先將檔案指標移至檔尾 long bufferSize = in.tellg(); // 就可以取得 in.txt 的檔案大小並存至 bufferSize char* buffer = new char[bufferSize]; // 動態記憶體配置 (取檔案大小 bufferSize 以做完整 Copy) in.seekg(0, ifstream::beg); // 再將檔案指標移回檔頭 in.read(buffer, bufferSize); // 由 in.txt 檔頭讀取 bufferSize 大小的字元陣列並存至 buffer out.write(buffer, bufferSize); // 將字元陣列 buffer 寫入 out.txt 大小為 bufferSize out.close(); // 關閉 out.txt 檔案 (關閉檔案之後所寫入的內容才會生效) in.close(); // 關閉 in.txt 檔案 delete [] buffer; // 釋放動態配置的記憶體 備註: 1. 讀寫檔時需要注意當前檔案指標所在位址。 (使用 seekg、seekp) 2. 動態記憶體配置使用完請記得釋放,否則會發生 Memory Leak。 3. 檔案使用完畢請記得關閉。 (使用 close) 4. 基本使用方式與以前 CRT 相同,只是多了類別封裝。 2008-02-21 00:38:08 補充: 我不知道「哈電族NC系列程式」是指什麼。 我所寫的範例是 C++ STL 裡所包含的 I/O Stream Library,其它還有哪些標頭檔可加入或者想知道全部的成員函數簽名請看參考資料。(這裡讀寫檔案用的是 fstream 類別) 2008-02-21 00:38:15 補充: 至於你所說的需求,只要 open 或建構時把 fstream::app 帶入 mode 即可: const char buffer[] = "No Content At All."; fstream stream("test.txt", fstream::binary | fstream::out | fstream::app); stream.write(buffer, strlen(buffer)); stream.close(); 執行兩次後,因為第一次檔案不存在所以會寫入內容,第二次則從檔尾寫起,因此不會把第一次寫入的內容覆蓋掉。
其他解答:477000A516FE1A90