如题,新手,帮帮忙啊
解决方案 »
- 请大侠帮满看下这个消息处理函数是处理什么的?在什么时候发生这个消息?
- vc 二进制数据的读取
- 有趣心理测试网站、好的笑话网站、有趣问答网站推荐!来者有份-----寻找一种放松方式
- CString 中的ReverseFind只能反向查找单个字符,比如string.ReverseFind( 'd' ),但是我想反向查找"abc"就不能用ReverseFind,那该怎么办呢
- 为什么CListCtrl 的OnItemChanged消息响应失效了
- 如何实现当windows中的任意软件打开某种格式的文件之前就自动运行我开发的一个程序.
- 急,访问网站后通常得到一个全站ASPSESSIONIDSACBSCSR=EMKHOPDBGGJCIKOIAJEBKPOM,请问用用wininet类如何得到并修改这个cookie
- 如何在xml中包含一段二进制数据?
- 线程间通信后遇到的一个问题
- 怎样提取htm 文件中的文本?
- q请高手指点方法,我做了2个MFC的应用程序(.exe),但他们之间需要有数据的传输,请问该怎么做?
- 找不到 resources?
WideCharToMultiByte 转换
是的,我项目工程使用的是U,写入文件想使用ANSI。结果写入总是有乱码,而且换行总是不对
也是2种方法void CConvertDlg::OnBnClickedButtonUnicodeToAnsi()
{
// unicode to ansi
wchar_t* wszString = L"abcd1234你我他";
//预转换,得到所需空间的大小,这次用的函数和上面名字相反
int ansiLen = ::WideCharToMultiByte(CP_ACP, NULL, wszString, wcslen(wszString), NULL, 0, NULL, NULL);
//同上,分配空间要给'\0'留个空间
char* szAnsi = new char[ansiLen + 1];
//转换
//unicode版对应的strlen是wcslen
::WideCharToMultiByte(CP_ACP, NULL, wszString, wcslen(wszString), szAnsi, ansiLen, NULL, NULL);
//最后加上'\0'
szAnsi[ansiLen] = '\0';
//Ansi版的MessageBox API
::MessageBoxA(GetSafeHwnd(), szAnsi, szAnsi, MB_OK); //接下来写入文本
//写文本文件,ANSI文件没有BOM
CFile cFile;
cFile.Open(_T("1.txt"), CFile::modeWrite | CFile::modeCreate);
//文件开头
cFile.SeekToBegin();
//写入内容
cFile.Write(szAnsi, ansiLen * sizeof(char));
cFile.Flush();
cFile.Close();
delete[] szAnsi;
szAnsi =NULL;
//方法2
//和上面一样有另一种方法
setlocale(LC_CTYPE, "chs");
char szStr[100];
//注意下面是大写,在ansi中,代表后面是unicode字符串
//sprintf
sprintf(szStr, "%S", wszString);
::MessageBoxA(GetSafeHwnd(), szStr, szStr, MB_OK);
}
转换为ascii再写