char* 转换为 CString 乱码问题(转)

 1 //计算char *数组大小,以字节为单位,一个汉字占两个字节
 2     int charLen = strlen(sText);
 3     //计算多字节字符的大小,按字符计算。
 4     int len = MultiByteToWideChar(CP_ACP,0,sText,charLen,NULL,0);
 5     //为宽字节字符数组申请空间,数组大小为按字节计算的多字节字符大小
 6     TCHAR *buf = new TCHAR[len + 1];
 7     //多字节编码转换成宽字节编码
 8     MultiByteToWideChar(CP_ACP,0,sText,charLen,buf,len);
 9     buf[len] = ‘\0‘; //添加字符串结尾,注意不是len+1
10     //将TCHAR数组转换为CString
11     CString pWideChar;
12     pWideChar.Append(buf);
13     //删除缓冲区
14     delete []buf;

原文地址

去原文站点

时间: 2024-10-12 12:54:33

char* 转换为 CString 乱码问题(转)的相关文章

[转]不能将参数1从“const char []”转换为“LPCTSTR

今天在使用vs2008+MFC时候,使用editControl的replacesel(“”)发生报错.如下::不能将参数1从“const char []”转换为“LPCTSTR” 其解决方案就是, 在项目属性里面找到项目默认值下面的字符集, 将其换为:使用多字节字符集就ok了.原因: typedef   LPCTSTR    LPTSTR ; #ifndef   _UNICODE    typedef   TCHAR   char;    #else    typedef   TCHAR   w

string,char*及CString类型的相互转换

首先先介绍一下什么是CString CString是MFC的字符串类,它不是基本类型,而是对字符串的封装,它是自适应的,在UNICODE环境下就是CStringW,在非UNICODE环境下就是CStringA. 如从对话框中利用 GetWindowText 得到的字符串就是 CString 类型, CString 定义在头文件中.CString(typedef CStringT> CString) 为 Visual C++ 中最常用的字符串类, 继承自 CSimpleStringT 类,主要应用

MFC之调用DLL的问题:error C2664: “LoadLibraryW”: 不能将参数 1 从“const char *”转换为“LPCWSTR

今天在项目中遇到了一个小小的问题,在调用别人动态连接库(DLL)的时候,总是出现如下提示,导致程序无法正常运行,编程环境:VS2010+MFC 问题提示:error C2664: "LoadLibraryW": 不能将参数 1 从"const char *"转换为"LPCWSTR 经过查找资料,问题得以解决,感谢: 解决方法来源于:http://blog.sina.com.cn/s/blog_6a2236590100xbgl.html 1 静态调用Lib

char[] 转换为LPWSTR

1.char[] 转换为 LPWSTR 解决方案: 思路一: 使用CA2W字符转换宏(ATL and MFC String Conversion Macros). 根据MSDN描述,这个宏用于将ANSI转换为Wide Character(UNICODE) 代码如下: LPWSTR aaa = CA2W(text); item.pszText = aaa; 思路二: 使用int MultiByteToWideChar()函数.根据MSDN描述,这个方法:This function maps a c

C++变量转换之转换为CString

1:int转换为CString CString str; str.Format("As string: %d", int); 2:double转换为CString CString str; str.Format("As string: %g", double); 3: 待续..

不能将参数 2 从“const char *”转换为“LPCWSTR”

不能将参数 2 从“const char *”转换为“LPCWSTR” 2013-06-05 17:18 阅读(309)评论(0)编辑删除 error C2664: “LoadImageW”: 不能将参数 2 从“const char *”转换为“LPCWSTR” 解决办法:将Project的属性里头的 字符集使用Unicode改成“未设置”. 属性->配置属性->常规->项目默认值->字符集->Unicode改成“未设置”.

不能从const char *转换为LPCWSTR 经常碰到(转)

不能从const char *转换为LPCWSTR 在VC 6.0中编译成功的项目在VS2005 vs2005.vs2008.vs2010中常会出现类型错误. 经常出现的错误是:不能从const char *转换为LPCWSTR 如使用MessageBox(hwnd,"TEST",NULL,0)就会报错,如果使用强制转换(LPCWSTR)"TEST",虽然能够通过,但是编码会出错. 可行的办法是使用 _T("TEST")转换,或者TEXT(&qu

转换为CString

CString a, b, c;c = a + b; 使用Format方法方便的实现int.float和double等数字类型转换为CString字符串. %c 单个字符 %d 十进制整数(int) %ld 十进制整数(long) %f 十进制浮点数(float) %lf 十进制浮点数(double) %o 八进制数 %s 字符串 %u 无符号十进制数 %x 十六进制数 int s = 123; CString str; str.Format(_T("%d"), s); CString

unicode下char*和CString

1.对话框打印char* char* info=""; ::MessageBoxA(this->m_hWnd, info, "", MB_OK); 2.CString转char* int nLen; char * wsabuf = NULL;#ifdef _UNICODE //CString转换成char* USES_CONVERSION; wsabuf = W2A(send_txt_str);//send_txt_str为CString消息#else#end