今天在使用vs2008+MFC时候,使用editControl的replacesel(“”)发生报错。 如下::不能将参数1从“const char []”转换为“LPCTSTR” 其解决方案就是, 在项目属性里面找到项目默认值下面的字符集, 将其换为:使用多字节字符集就ok了。 原因: typedef LPCTSTR LPTSTR ; #ifndef _UNICODE typedef TCHAR char; #else...
const char* strEn="中国"; //将const char*转化为LPCTSTR int length = sizeof(TCHAR)*(strlen(strEn) + 1); LPTSTR tcBuffer = new TCHAR[length]; memset(tcBuffer, 0, length); MultiByteToWideChar(CP_ACP, 0, strEn, strlen(strEn), tcBuffer, length); LPCTSTR pDest = (LPCTSTR)tcBuffer;...
LPSTR: 32bit指针 指向一个字符串,每个字符占1字节。 相当于 char * LPCSTR: 32-bit指针 指向一个常字符串,每个字符占1字节。 相当于 const char * LPTSTR: 32-bit指针 每字符可能占1字节或2字节,取决于Unicode是否定义 LPCTSTR:32-bit指针 指向一个常字符串,每字符可能占1字节或2字节,取决于Unicode是否定...
(const WCHAR *)(str_cap.AllocSysString()); (LPCTSTR)(str_cap.AllocSysString()); 同上面效果相同 本文根据 http://hi.baidu.com/rdhome/blog/item/09cf38ccd836901700e9286d.html http://hi.baidu.com/syqust/blog/item/d04a7bd9091987e139012ffc.html 改编。
LPCTSTR等同于const TCHAR *, TCHAR是一种中间类型,它根据你的工程是否定义了宏UNICODE而有不同。如果定义了UNICODE 那么,TCHAR = wchar_t (宽字符),否则,TCHAR =char。更多的你再去找些资料,下面给你个转换方法:const char* pSource="ABCD中国";LPCTSTR pDest=NULL;if(sizeof(TCHAR)==...
在项目属性里面找到项目默认值下面的字符集, 将其换为:使用多字节字符集就可以了,运行成功。
使用_T、L、TEXT等转换宏 MyFunZipCp(_T("C:\\SY.txt"),_T("C:\\SY.ZIP"),false);或者 MyFunZipCp(L"C:\\SY.txt",L"C:\\SY.ZIP",false);或者 MyFunZipCp(TEXT("C:\\SY.txt"),TEXT("C:\\SY.ZIP"),false);
const char *lpctStr=(LPCTSTR)cStr; LPCTSTR转CString LPCTSTR lpctStr; CString cStr=lpctStr; 将char*类型的变量赋给CString型的变量 可以直接赋值,如: CString myString = "This is a test"; 也可以利用构造函数,如: CString s1("Tom"); 将CString类型的变量赋给char []类型(字符串)的变量 1、sprintf()...
const char* ch = (LPCTSTR)cstr;ch指向的地址和cstr相同。但由于使用const保证ch不会修改,所以安全.2.传给未分配内存的指针.CString cstr = "ASDDSD";char *ch = cstr.GetBuffer(cstr1.GetLength() + 1);cstr.ReleaseBuffer();//修改ch指向的值等于修改cstr里面的值.//PS:用完ch后,不用...
strcpy((char *)(LPCTSTR)str,"aa"); cout<<(LPCTSTR)str<<endl; cout<<(LPCTSTR)str1<<endl; 按说我们只改变了str,str1应该没有改变呀,可是事实时他们都变成了"aa".难道str和str1里面的字符指针指向的缓冲区是一个.我们在Effective C++里面得知,如果你的类内部有包含指针,请为你的类写一个拷贝构造函数...