文章出處

android上讓我放棄使用wstring來操作中英文字符串  

2013-08-07 16:37:24|  分類: cocos2d|舉報|字號 訂閱

 
 
項目需要,需要對中英文字符串進行遍歷修改等,本來wstring和string網上面有一大堆的介紹,其中有一個“跨平臺”的方法,但是無奈是用到setlocale這個方法,這個方法在android(NDKR8D)上面無論如何都返回null,也可以看看其源代碼(測試版本NDK R8D)

google和度娘上找了我一整天,后來不得不請教himi,himi指了一個方法給我,也解決了我這個需求。最終的不得不放棄使用wstring
 
先感謝一下李華明himi
 
簡述一下himi的思路,遍歷std:string,判斷每個字節的范圍是否在[0,127]這個ascii范圍內,不是的話,就以長度為3放進一個string里面,最后返回的結果是一個vector<string>,就等于我要用到的wstring了
 
簡單代碼如下:

vector<string> toVectorCharacters(const string& $str, int $characterWidth) {
int size = $str.size();
vector<string> result;
FOR_LOOP(size, i){
char c = $str[i];
if (c <= 127 && c >= 0) {
string asciiChar($str.begin() + i, $str.begin() + i + 1);
result.push_back(asciiChar);
} else {
string utf8char($str.begin() + i, $str.begin() + i + $characterWidth);
result.push_back(utf8char);
i += $characterWidth - 1;
}
}

return result;
}


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()