纪念一下VC2005的CString转化到char*事件

昨晚很晕用vc2005将原来c#代码改到c++,其中有一句要将字符串转到数值。改后的c++统一用CString表示字符串,然而atoi函数必须传入cosnt char*作参数,折腾了1个小时还叫了几个同事来看,愣就是没有转换成功。今早再来在网上查。

看到了别人也遇到类似问题,因用以下问题描述:

在VC6.0可以这样转化,结果正确
CString strName = _T("HanZhiguang");
char szName[128];
strcpy(szName, strName);// CStrng -〉char *
// 或者sprintf(szName, "%s", strName);
用strcpy 和sprintf都可以转化成功,但是在vc2005下却不能成功,
用sprintf(szName, "%s", strName); 只能将第一个字符'H'传入szName,请高手执教。怎么将CString 转化为 char *

解决办法:

由于VS2005的CString中的字符是unicode的原因,可以通过更改项目设置或者可用WideCharToMultiByte函数将它转成Ansi的。接下来的转化就和VC6一样的了。

参考:http://www.techfaqdb.org/p_12_c_9/t_5254737_c_9/

原文地址:https://www.cnblogs.com/flyingfish/p/677979.html