文章出處
文章列表
項目需要,需要對中英文字符串進行遍歷修改等,本來wstring和string網上面有一大堆的介紹,其中有一個“跨平臺”的方法,但是無奈是用到setlocale這個方法,這個方法在android(NDKR8D)上面無論如何都返回null,也可以看看其源代碼(測試版本NDK R8D)
google和度娘上找了我一整天,后來不得不請教himi,himi指了一個方法給我,也解決了我這個需求。最終的不得不放棄使用wstring
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;
}
文章列表
全站熱搜