网上有许多介绍CString转换为LPCSTR的方法,但在一次调试程序时发现各种方法都编译出错,有些方法可编译通过,但转换结果不对,明明可行的方法居然失效。例如下面的代码:
CString cStr = _T("Hello,world!");
int nLen = cStr.GetLength();
LPCSTR lpszBuf = cStr.GetBuffer(nLen);
在VC++2005中编译后运行,发现lpszBuf中只有“H”字符,后来发现把字符集改成“使用多字节字符集”就一切正常。修改成使用多字节字符集,程序中甚至不需做任何显式处理也可以实现转换,例如:
CString s1 = _T("Hello,world!");
LPCSTR s2 = s1;
上面代码编译通过,运行正常。