转换分两种情况,就VS中的配置而言,这两种情况就是宽字符集和UNICODE字符集。
宽字符集情况下的转换:
CString str = _T("123456");
string stdString(str.GetBuffer(0));
str.ReleaseBuffer();
这种转换网上很常见,基本能搜索到的都是这种转换,并不区分字符集,如果是使用的UNICODE字符集这种转换是会报错的,连编译都过不去。
UNICODE字符集情况下的转换:
CString str = _T("123456");
string stdString(W2CA(str.GetBuffer(0)));
str.ReleaseBuffer();
与宽字符集下的转换相比只是多了一步:调用W2CA这个宏。