1

覚えているかもしれませんが、Windows のメモ帳には、「名前を付けて保存」機能で、ASCII (デフォルト)、UTF-8、Unicode、およびビッグ エンディアンとしてエンコードする機能があります。 ASCII .txt ファイルのテキストを処理し、結果を Unicode .txt ファイルとして保存するプログラムを作成する必要があります。

  • 検索したところ、ここでの Unicode は UTF-16LE (BOM なし) を意味します。私が間違っている場合は、修正してください。
  • ASCII から char として読み取り、それを wchar_t に 1 つずつ変換しようとしましたが、成功しましたが、UTF-16LE ではなく UTF-8 を使用しています。それが私がそれを行う方法です:

    int result = (int)input_char; //input_chat is char from ASCII 
    while(result<0) result+=256;
    wchar_t output_wchar = wchar_t(result);
    

このコードはファイルで動作し、ASCII シンボルを失うことはありません。

  • また、UTF-16LE は U+hhhh コードとしてコーディングされていることも知っています。したがって、前のステップが正しければ、私の問題は次のとおりです。U + hhhhコードをc ++でwchar_tに配置する方法は?
4

1 に答える 1

3

ソースが ASCII でwchar_tサイズが 2 バイトで、リトル エンディアン システム (ここでは安全な推測だと思います) を使用している場合、暗黙的な変換以外に実際には何もありません。

wchar_t output_char = input_char;

wchar_t次に、書き込みたい場所に s をビットブラストするだけです。

于 2013-04-24T20:37:37.653 に答える