2011-04-06 6 views
1

私は(std::getline())を作成してAndroid NDKのUTF-16文字列を操作したいので、(比較的)苦労なくJavaに戻して表示することができます。現在、私はC++ 0xを使用しています。これは、LOCAL_CPPFLAGS := -std=c++0xスイッチを使用しています(他の0x関数を使用しています)。コンパイラがu16stringを見つけることができないようです。私は<string>を含んでおり、他のエラーは発生しません。私は次のようなことをしたい:アンドロイドの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が含まれていますか?私は何をすべきか?

答えて

3

NDKはワイド文字、UTF-16などをサポートしていません(少なくとも正式ではありません)。それは適切なC++ライブラリを提供しません。

+3

+1:NDKはC++ライブラリの申し訳ありません。 – ognian

+0

NDKはC++ 0xモードでネイティブにUTF-16をサポートするGCCを使用していると言われます。私は、いくつかのプリプロセッサフ​​ューがあることを期待していると思います。それは、 'string's(完全にC++ 0xのとき)を認識するために行うことができるものです。 – Warpspace

+0

@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

関連する問題