国产探花免费观看_亚洲丰满少妇自慰呻吟_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)]是不行的)


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 崇义县| 遂宁市| 宁津县| 濮阳县| 马鞍山市| 长泰县| 阿克| 武宁县| 黔西县| 黄山市| 博兴县| 河北省| 民乐县| 桐城市| 灵寿县| 通城县| 五莲县| 平度市| 盘锦市| 万源市| 浏阳市| 石城县| 界首市| 光泽县| 平陆县| 杨浦区| 香港| 东莞市| 怀来县| 宁化县| 固安县| 雷波县| 文成县| 阜新| 郸城县| 乐业县| 新巴尔虎左旗| 江安县| 阳泉市| 大理市| 贵州省|