-1

現在、私はこの文字°(度記号) を持っています。これを に変換する必要があり/00B0ます。C/C++ 用の ICU というライブラリがあることに気付きましたが、そのようなライブラリを使用する必要がありますか? 私の入力は ISO/IEC 8859-1 としてエンコードされています。

一般的な C++ ライブラリには、この DECODE 関数が既に実装されていますか、またはそのような操作には ICU ライブラリが必要ですか?

そのようなキャラクターを呼び出す方法がある場合は、°私をそのように転送するか、簡単な例を書いてください? :)。

編集だから私は行全体を循環し、特殊文字、またはアルファベット文字、数字文字、「-」文字、または「 」文字ではない文字が表示されると、その文字の出力を求めますそれらのテストのいずれにも合格しませんでした。

\303特殊文字の OCTAL 形式のような出力が得られます。テストを行うために使用するコードは次のとおりです。

if (isalpha(aline[i+1]) || isdigit(aline[i+1]) || aline[i+1] == '-' || aline[i+1] == ' ')
   regionName.push_back(aline[i+1]);
else
   cout << aline[i+1] << endl;

したがって、else ステートメントが実行されると、8 進数の出力が得られます...デフォルトでは...どうすればそれを Unicode 形式に変更できますか?

出力例:

\303
\203
\302
4

2 に答える 2

0

については、3 つの基本事項がありますUNICODE

  1. 文字を読む
  2. 文字をメモリに格納する
  3. 文字を書く・表示する

Unicode アプリケーションでは、文字列は通常 2 バイト文字として格納されます。1 と 3 については、単純な C++ には何もありません。ポイント 2 については、標準 C++ ライブラリは、文字を 2 バイト文字列として格納するためのクラス wstring を提供します。

「I have the char」と言う場合、それはどういう意味ですか? ファイルに入っていますか?コンソールから読みますか?どちらの場合も、入力ソースのエンコーディングを知っている必要があります。

文字を表示するときは、GUI ライブラリがユニコードを処理できることを確認する必要があります。

したがって、疑似コードの基本的な手順は次のとおりです。

 char* myData = "some local-encoding data";
 MyUnicodeCapableStrincClass myString = MyUnicodeCapableStrincClass::fromsomeLocalEncoding( myData );
 MyUnicodeCapableGuiTextControl.setText( myString );

これを知っていれば、ICU ドキュメントでコード例をより早く見つけることができるはずです。私は今までICUを知りませんでした。(私は Qt を使用しています - 1998 年以降、ユニコードが含まれています。)

于 2013-08-02T18:16:52.133 に答える