MFC寫入檔案的尷尬 讓ofstream流行起來

2021-07-10 08:21:49 字數 896 閱讀 9646

最近遇到乙個問題:將mfc介面中的資料用.log程式日誌的形式儲存起來。使用鍊錶對資料進行儲存是比較正常的選擇,但是對於c++的強大我認為不應該置之不理,於是決定使用ofstream對檔案進行寫操作。

但是結果真的很坑,除漢字外其他資料都是亂碼。原本以為是編譯器的編碼格式出了問題,但是,經過多方排除法,發現不是這樣的。

其實是cstring的原因,ofstream能寫入的需要char *,這需要對其進行轉化。

cstring轉換為char *網上的一些真的好坑。

實踐之後才知道cstring 有cstringa和cstringw兩種。

ansii 和wide寬位元組。

對於unicode編碼的編譯器來說,簡直噩夢,各種格式轉換。。。

cstringa test;

char *test;

test= test.getbuffer();

只有cstringa才行,如果是cstringw還需要轉換為cstringw。

mfc listcontrol view外觀設定 的「陷阱」

預設情況下,如果你將listcontrol控制項的view設定為report(報**式)

在設定響應函式onlvnitemchangedlist時會出現無法響應的情況,原本以為是沒有將singal selection(單選)設定為true,後來發現view設定為icon就可以響應。

其實這裡有個「陷阱」,屬性中的view使用icon,但是要在**中設定為report。手動新增,在初始化介面的**裡新增即可

clistctrl.modifystyle(0, lvs_report);

之後onlvnitemchangedlist可以正常使用,還有乙個方法就是新增單擊事件。總之就是希望大家不要掉坑里,我把自己的脫坑經驗拿出來曬曬,有點low,但出發點很高大。

MFC中用CFile讀取和寫入檔案

mfc提供了cfile類方便檔案的讀寫,首先要知道,檔案的資料讀取 資料寫入與檔案指標的操作都是以位元組為單位的,資料的讀取和寫入都是從檔案指標的位置開始的,當開啟乙個檔案的時候,檔案指標總是在檔案的開頭。常規方法如下 cfile file file.open lpctstr lpszfilenam...

MFC下用CFile類進行檔案的寫入

因為cfile類預設是英文寫入檔案,所以如果不設定的話是不會在檔案中寫入中文的。需要進行以下設定 需加標頭檔案 include 確保能讀寫中文 tchar old locale tcsdup tsetlocale lc ctype,null tsetlocale lc ctype,t chs 在cf...

檔案的寫入

os.path.exists 判斷某個檔案是否存在,如果存在返回true 不存在返回false is exist os.path.exists 1.txt if is exist true file handle open 1.txt r file handle open 1.txt w write...