首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

CString 写入文件是双字节?解决方案

2012-01-18 
CString写入文件是双字节?CString写入文件是双字节? 如: 写入字符串:http-- 真实内容:h.t.t.p--十六进制

CString 写入文件是双字节?
CString     写入文件是双字节? 如: 写入字符串:http--> 真实内容:   h.t.t.p   -->   十六进制:68   00   74   00   74   00   70   00

怎么样才能原样写入http   ????

下面两种办法的结果一样:

//FILE   *   pFile   =   _wfopen(fileDlg.m_szFileName,   _T( "w+ "));
//fwrite(m_strOut,   m_strOut.GetLength(),   1,   pFile);
//fflush(pFile);
//fclose(pFile);

HANDLE   hFile;
DWORD     dwRet   =   0;
hFile   =   CreateFile(fileDlg.m_szFileName,         //   file   to   create
GENERIC_WRITE,                     //   open   for   writing
0,                                             //   do   not   share
NULL,                                       //   default   security
CREATE_ALWAYS,                     //   overwrite   existing
FILE_ATTRIBUTE_NORMAL,     //   normal   file      
NULL);                                     //   no   attr.   template

WriteFile(hFile,   m_strOut   ,   lstrlen(m_strOut)   *   sizeof(char),   &dwRet,   NULL);

CloseHandle(hFile);

[解决办法]
是否已经设成了Unicode工程模式?
[解决办法]
自己写一个buffer类处理文件操作,CString在内部处理了字节问题。
[解决办法]
两个办法:一是改成非unicode模式,但是你其他地方的一些代码可能需要修改。
另外的办法是定义char buf[100];使用W2A宏进行转换,也可以使用Api来转换。

热点排行