C++ 數據寫入文件與讀回

gf67 9年前發布 | 1K 次閱讀 C/C++

    軟件制作過程常常需要將一些設置參數存成文件以供下次啟動時調用,這時運用CArchive類來進行相關操作顯得相當方便。

    將數據寫入文件:

int data = 123;
CFile mydatafile(L"datasave.h264player", CFile::modeCreate | CFile::modeWrite);//datasave.h264player為文件名,使用的是相對路徑,文件被存成在本軟件目錄下
CArchive mywiringdatafile(&mydatafile, CArchive::store);
mywiringdatafile << data;//將數據寫入
mywiringdatafile.Close();
mydatafile.Close();

   

    將數據讀回:

int data;
CFile mydatafile(L"datasave.h264player", CFile::modeRead);
CArchive mywiringdatafile(&mydatafile, CArchive::load);
mywiringdatafile >> data;//讀回文件的數據到data變量里面
mywiringdatafile.Close();
mydatafile.Close();

    由上面的寫讀操作也可以發現一個問題,我們必須知道文件的存儲結構才能將數據正確地讀回,這對于數據起到一種較為初級的保護作用。


    而有些時候我們需要一行一行的讀寫數據,MFC中我們可以借助CStdioFile類來做這件事

    讀取行數據:

CStdioFile mPcbFile;
mPcbFile.Open(L"PCB//JK-M012-V4.apr", CFile::modeRead);//文件打開
CString mLineData;
while (mPcbFile.ReadString(mLineData))
{
    //處理mLineData中讀到的行數據
}
mPcbFile.Close();//文件關閉
    寫入數據(不帶中文):
CStdioFile file;
file.Open(L"writetest.txt", CFile::modeCreate | CFile::modeWrite);//文件打開
CString str=L"asd\n";
file.WriteString(str);//寫入行數據
file.WriteString(str);//寫入行數據
file.Close();//文件關閉


由于字符集的影響,如果用的是unicode字符集,要用CStdioFile像上面那樣來寫入中文的話會出現問題,需要包含頭文件locale.h,然后將上面帶碼修改如下:
CStdioFile file;
file.Open(L"writetest.txt", CFile::modeCreate | CFile::modeWrite);//文件打開
setlocale(LC_CTYPE, ("chs"));
CString str=L"啊哈哈哈哈哈\n";
file.WriteString(str);//寫入行數據
file.WriteString(str);//寫入行數據
file.Close();//文件關閉
 本文由用戶 gf67 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!