ホームページ >バックエンド開発 >C++ >C で UTF-8 文字列を wstring に安全に変換するにはどうすればよいですか?

C で UTF-8 文字列を wstring に安全に変換するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-18 03:04:09126ブラウズ

How Can I Safely Convert a UTF-8 String to a wstring in C  ?

C : エンコーディングを維持しながら文字列を wstring に変換

日本語の文字を含む文字列 s が与えられ、その内容を代入したいと考えています。 wstring、ws に変換します。タスクは、エンコードの問題を発生させずにこの割り当てを実行することです。

解決策:

C 11 以降を使用すると、このタスクは標準ライブラリのみで実行できます。

ステップ 1: 必要な情報を含めるヘッダー

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

ステップ 2: コンバーターを作成する

std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;

このコンバーターは、UTF-8 (s のエンコーディング) 間の変換を処理します。および UTF-16 (ws のエンコーディング)。

ステップ 3: 変換文字列を wstring に変換します

std::wstring ws = converter.from_bytes(s);

例:

std::string s = "おはよう";
std::wstring ws;

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

注:

  • この解決策は、 に有効な UTF-8 でエンコードされた Unicode が含まれていることを前提としていますdata.
  • より複雑なエンコード シナリオの場合は、std::codecvt_utf8.
の使用を検討してください。

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

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