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