心静自然凉~

一杯清茶、二盏淡酒、邀三五知己,诉七八句心语,道九分珍重,怀十分真诚,或伤感、或快乐,无现实之隔阂 、无世俗之势利,如此人生,不亦乐乎!

导航

VC.net 2005 中CString转成char *

Posted on 2008-01-02 16:24  Leo.Zhu  阅读(2359)  评论(0编辑  收藏  举报
工作需要,要写一个vc的exe的Com,对于一个vc初学者来说,这个还是比较有难度的,还好之前有看过基本vc的书,也经常没事的时候看看vc的code,虽然没有具体开发过什么,但是也了解一些。

今天想想,要写一个COM,但是我一直都没vc的一些有用的类,之前一直使用C# 所以自己总结过许多类,来方便自己以后的开发。但vc的我一个也没有。
唉,那就先写一个CLOG的类吧,于是根据我C#中log类的设计,设计出一版VC的code。将在下篇中介绍下CLog的设计。

但是第一个遇到的问题就是写汉字到文件中,使用CStdioFile 文件中根本没有任何东西写进去,只有写数字和字母还可以,我是一看英语就比较头疼的那类,所以还是希望自己的log中下一些中文的东西。

于是尝试使用CFile的类, 发现使用CFile的类可以将中文写入,只不过需要带入的是char *型的参数。
但是在vs。net 2005中,要把一个CString转换成char*就会出错,于是就Google吧

找到方法如下:

将Cstrng --> char *

DWORD leg = WideCharToMultiByte(CP_OEMCP,NULL,csFullData,-1,NULL,0,NULL,FALSE);
CHAR strchar [5000];
WideCharToMultiByte(CP_OEMCP,NULL,csFullData,-1,strchar,leg,NULL,FALSE);

目前我的Clog已经可以正确的工作了。


MultiByteToWideChar和WideCharToMultiByte用法详解 : http://blog.csdn.net/norains/archive/2006/12/25/1461174.aspx