1.char字符串转换为CString字符串
这个在MFC编程里尤其常见,各种控件显示的内容都是要求CString类型的,网上也有很多方法,但是实际上会遇到各种各样的问题,我当初折腾了好久,耗费了我许久精力终于成功,代码如下,下面的代码是可以应付绝大部分情况的:
char cstr[256] = "you can input other string";
CString res;
res.Empty();
res.Format(_T("%s"), CStringW(cstr));
这样就行了,显示出来的结果是正确的,即使char字符串是中文字符串也行,所以这边不需要用wchar类型的字符串来表示中文,事实上,VS里面编程的时候基本不需要特地使用wchar类型,基本上不会用到,因为char类型也能应付大部分中文字符了。
CString字符串的方法Format的参数类似于sprintf,但是格式化字符串参数要以_T(“%s”)的形式,当然也可以这样_T("这样也可以哦!字符串%s,整数%d等等"),然后是后面的参数,如果是字符串,则一定要加上CStringW(),一定要加上!虽然有时候不加上也能正确显示,但是这不是通用的,有些时候是行不通的,但是加上之后就能应付绝大多数情况了,这是我的惨痛教训之一。
2.CString字符串转换为char字符串
MFC里也尤其常见,我们获得的控件里的内容都是CString类型的,但是这种类型处理起来不太方便,而且也不太熟悉,所以要转换成大家比较熟悉的char字符串类型。具体代码如下:
char filename[256];
CString tmp = _T("C:\\log.txt");
USES_CONVERSION; //在同一个函数里这条语句只要写一次就行,但是一定要写!
LPTSTR p = T2A(tmp);
ZeroMemory(filename, sizeof(filename));
memcpy(filename, p, strlen(p)+1);
接下来就可以使用filename了,虽然没有网上那些方法方便,但是还是那句话,这个代码可以应付绝大多数情况了。