国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

CString 轉char *并且解決中文亂碼的問題

2019-11-08 02:38:39
字體:
來源:轉載
供稿:網友

很多網友給的CString 轉char *的方式如下:

CString str=_T("abcdf");

char *ptr=str.GetBuffer(str.GetLength());

str.ReleaseBuffer();

ptr得到的是a;

各種煩惱,最后本人自己寫了一段代碼,如下:

CString str=_T("abcdf");char *des=new (std::nothrow)char[str.GetLength()];int i=0;for (;i<str.GetLength();i++){*(des+i)=str.GetAt(i);}*(des+i)='/0';

des得到的是abcdf。

本以為解決了問題,但是如果CString中有中文(在vs2010中,項目-->項目屬性--->配置屬性--->常規中的字符集使用的是“使用 Unicode 字符集”),上面的代碼會出現中文亂碼,有網友的解決方案是把字符集改為“使用多字節字符集”還是不能解決問題。最后使用如下代碼:

CString str=_T("abcdf中文測試123");

char buf[16];wchar_t *ptr;ptr=str.GetBuffer(str.GetLength()*sizeof(wchar_t));WideCharToMultiByte(CP_ACP, 0, (LPCTSTR)ptr, -1, buf, sizeof(buf), NULL, NULL);str.ReleaseBuffer();

buf的內容是abcdf中文測試123,這里buf的空間不太好把握,但是至少要比str的長度大。

(注意把char *buf=new char[str.GetLength()*sizeof(wchar_t)]是不行的)


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 巴彦淖尔市| 大同市| 古蔺县| 德安县| 荆州市| 得荣县| 陇川县| 乾安县| 刚察县| 甘泉县| 中山市| 石门县| 苗栗市| 张家界市| 额敏县| 综艺| 彭泽县| 吴忠市| 芦溪县| 柳江县| 开阳县| 嘉义市| 明星| 读书| 塔城市| 中江县| 百色市| 贺州市| 泉州市| 广河县| 乳山市| 阜新市| 垣曲县| 东源县| 安庆市| 凯里市| 汕尾市| 庆元县| 江陵县| 庄河市| 喀喇沁旗|