MFC写入文件的尴尬——让ofstream流行起来

来源:互联网 发布:特蕾莎修女知乎 编辑:程序博客网 时间:2024/04/20 06:30

ofstream对文件进行读写

最近遇到一个问题:将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。

C++的文件操作函数对输入输出流进行处理,真的很强大。

补充一:OnLvnItemchangedList函数不响应

MFC ListControl View外观设置 的“陷阱”
默认情况下,如果你将ListControl控件的view设置为Report(报表格式)
在设置响应函数OnLvnItemchangedList时会出现无法响应的情况,原本以为是没有将singal selection(单选)设置为true,后来发现view设置为icon就可以响应。

其实这里有个“陷阱”,属性中的view使用icon,但是要在代码中设置为Report。手动添加,在初始化界面的代码里添加即可
CListCtrl.ModifyStyle(0, LVS_REPORT);

之后OnLvnItemchangedList可以正常使用,还有一个方法就是添加单击事件。总之就是希望大家不要掉坑里,我把自己的脱坑经验拿出来晒晒,有点low,但出发点很高大。

1 0
原创粉丝点击