1
我希望在Android NDK中創建(std::getline()
)並操縱UTF-16字符串,以便我可以將它們(相對)無痛地傳遞迴Java以供顯示。目前,我正在使用C++ 0x,使用LOCAL_CPPFLAGS := -std=c++0x
開關,它可以工作(我正在使用其他一些0x函數)。似乎編譯器找不到u16string
。我已經包含<string>
,並且沒有其他錯誤。我希望做一些如:Android中的u16string和char16_t NDK
ifstream file(fileName);
if(!file.is_open()) {
return false;
}
while(!file.eof()) {
u16string fileLine;
std::getline(file, fileLine);
// Do stuff with fileLine
}
return true;
NDK是否包含過時的GCC版本?我該怎麼辦?
+1:NDK是一個C++庫的歉意藉口 – ognian 2011-04-06 14:39:53
我被告知NDK使用GCC,它在C++ 0x模式下本機支持UTF-16。我想我希望有一些預處理器-fu或者可以做的事情,以便它能夠在該(正式實驗)模式下識別字符串完整的C++ 0x方式 – Warpspace 2011-04-07 03:38:25
@Warpspace NDK(至少我的老年人NDK 4b)帶有gcc-4.4.0,它確實應該支持新的C++ 0x字符類型char16_t和char32_t - 但是它沒有庫支持。 Android NDK甚至不知道std :: string。最簡單的事情可能是使用UTF-8 - JNI支持這兩種方式。否則,您可以使用stlport(無C++ 0x支持)爲您提供std :: string或std :: basic_string,爲char16_t定義/實現char_traits並將自己的u16string定義爲basic_string。不確定stlport是否支持wchar_t/wstring。 –
sstn
2011-04-07 11:55:31