ホームページ >バックエンド開発 >C++ >C 文字列をワイド文字列に確実に変換するにはどうすればよいですか?

C 文字列をワイド文字列に確実に変換するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-22 12:34:10477ブラウズ

How Can I Reliably Convert a C   String to a Wide String?

C で文字列を Wstring に変換する

あなたの質問には、 C で文字列 s をワイド文字列 ws に変換することが含まれています。一部のメソッドでは元のコンテンツを完全に保存することはできませんが、標準ライブラリ コンポーネントを使用する効果的な解決策があります。

問題の説明

文字列 s が与えられた場合、次のようにします。その内容を wstring ws に代入します。ただし、以前の試行では変換が歪んだり、不正確になったりしました。

解決策: 標準ライブラリ変換

#include <locale>
#include <codecvt>
#include <string>

std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
std::wstring ws = converter.from_bytes(s);

説明

このコードは標準ライブラリ関数を使用して、変換。

  • std::wstring_convert: char 文字列を wstring に変換するための from_bytes() メソッドを提供するコンバータ オブジェクト。
  • std::codecvt_utf8_utf16: A UTF-8 と UTF-16 の間で変換する文字エンコード コンバーターencodings.

このエンコード変換を使用すると、s の元の Unicode 文字が ws に正確に保存されます。

以上がC 文字列をワイド文字列に確実に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。