秋涛寒色

平生所为,未尝有不可对人言者

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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了,虽然没有网上那些方法方便,但是还是那句话,这个代码可以应付绝大多数情况了。

 

posted on 2015-05-27 14:00  秋涛寒色  阅读(569)  评论(0编辑  收藏  举报