CString 转换到LPTSTR (char*), 预定的做法是调用CString的GetBuffer函数,使用完毕之后一般都要再调用ReleaseBuffer函数来确认修改(某些情况下也有不调用ReleaseBuffer的,同样你需要非常明确为什么这么做时才能这样子处理,一般应用环境可以不考虑这种情况)。 同时需要注意的是,在GetBuffer 和ReleaseBuffer之间,CString分配了内存交...
CString strText; LPTSTR lpszText = _T("LPTSTR >> CString"); strText.Format( _T("%s"), lpszText ); ::MessageBox( NULL, strText , _T("标题"), MB_ICONASTERISK|MB_TASKMODAL|MB_OK ); CString 转换成 LPTSTR (1)强制转换 CString strText( _T("This is a test") ); LPTSTR lpszTex...
CString可以强制转换为LPCTSTR,也即LPCSTR(MBCS),LPCWSTR(Unicode)CString的GetBuffer方法来得到LPTSTR,也即LPSTR(MBCS),LPWSTR(Unicode)
CString cstr; str = cstr.GetBuffer(0); //str使用... cstr.ReleaseBuffer(); 由于MFC中CString为 ATL::CStringT< TCHAR, StrTraitMFC_DLL< TCHAR > > ;当定义了_UNICODE宏时,TCHAR = wchar_t,所以,注意将工程->属性->配置属性->常规 中的字符集进行适当更改,以确认为“使用多字节字符集”或者“使用Uni...
char* 与LPTSTR (或LPCTSTR)及CString 之间的转换,如果定义了_UNICODE,则此时LPTSTR为宽字节,即LPWSTR,而char为窄字节,转换如下 (1)char*->LPTSTR:char*myChar=W2A(lptstr) (2)LPTSTR->char*:LPTSTRlptstr=A2W(myChar) (3)CString->LPTSTR:LPTSTRlptstr=
至于CString 到 char* 可以用GetString到 WCHAR* 或char 注意返回的好像是一个 const 的 ,所以最好先强制转换一下。然后再用上面的函数。顺便说一下,大部分函数都支持宽字节,比如ifstream 、string 用宽字节就是 wifstream、wstring CreateWindow的宽字节就是CreateWindowW 不用宽字节就是CreateWindowA ...
CString cs;string s;char *ch1; wchar_t *ch2;cs=ch1; ch2=cs.GetString;s=ch; ch=s.str_c;
(2)CString::Format()格式化 CString strText; LPTSTR lpszText = _T("LPTSTR >> CString"); strText.Format( _T("%s"), lpszText ); ::MessageBox( NULL, strText , _T("标题"), MB_ICONASTERISK|MB_TASKMODAL|MB_OK ); (1)强制转换 ...
而LPTSTR 就是 char*, 即普通字符串(非常量,可修改的)。 这两种都是基本类型, 而CString 是 C++类, 兼容这两种基本类型是最起码的任务了。 由于const char* 最简单(常量,不涉及内存变更,操作迅速), CString 直接定义了一个类型转换函数 operator LPCTSTR() {...}, 直接返回他所维护的字符串。 当你...