私は最初から StackOverflow を使用しており、時々質問を投稿したくなることがありますが、私は常に自分でそれらを理解するか、最終的に投稿された回答を見つけました...今まで. これはかなり単純なはずですが、私は何時間もインターネットをさまよい続けてきましたが、うまくいきませんでした。
英語と中国語の文字が混在する、かなり標準的な utf-16 テキスト ファイルがあります。これらの文字が文字列 (技術的には wstring) になるようにしたいと思います。私は多くの関連する質問が回答されているのを見てきましたが (ここや他の場所で)、エンコーディングを知らずに任意のファイルを読み取る、またはエンコーディングを変換するというはるかに困難な問題を解決しようとしているか、単に「Unicode について混乱している」だけです。 " はエンコーディングの範囲です。読み込もうとしているテキスト ファイルのソースはわかっています。常に UTF16 であり、BOM などすべてが含まれており、そのままの状態を保つことができます。
こちらで説明されている解決策を使用していましたが、すべて英語のテキスト ファイルで機能しましたが、特定の文字に遭遇した後、ファイルの読み取りが停止しました。私が見つけた他の唯一の提案は、 ICUを使用することでした。これはおそらく機能しますが、1 つのテキスト ファイルを 1 か所で読み取るためだけに、配布用のアプリケーションに大きなライブラリ全体を含めることは避けたいと思います。ただし、システムの独立性は気にしません。Windows でコンパイルして作業する場合にのみ必要です。その事実に依存しないソリューションの方がきれいだろうもちろん、しかし、Windows アーキテクチャに関する仮定に依存しながら stl を使用したソリューション、または win32 関数または ATL を含むソリューションにも同様に満足しています。ICU のような別の大規模なサードパーティ ライブラリを含める必要はありません。自分ですべて再実装したくない場合は、まだ完全に運が悪いのでしょうか?
編集:私はこの特定のプロジェクトで VS2008 を使用して立ち往生しているため、残念ながら C++11 コードは役に立ちません。
編集 2: 以前に借りていたコードが、思っていたように英語以外の文字で失敗しないことに気付きました。むしろ、':' (全角コロン、U+FF1A) と ')' (全角右括弧、U+FF09) など、テスト ドキュメントの特定の文字で失敗します。bames53 の投稿されたソリューションもほとんど機能しますが、同じキャラクターに困惑していますか?
編集 3 (および答え!): 私が使用していた元のコードはほとんど機能しました。