ホームページ > バックエンド開発 > C++ > C で文字列 (または char) を wstring (または wchar_t) に変換するにはどうすればよいですか?

C で文字列 (または char) を wstring (または wchar_t) に変換するにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-04 19:24:39
オリジナル
150 人が閲覧しました

How to Convert a String (or char) to a wstring (or wchar_t) in C  ?

C string (または char) を wstring (または wchar_t) に変換します

問題:

文字列または char 変数が与えられた場合、その内容を wstring に割り当てるにはどうすればよいですか?または wchar_t 変数?

解決策:

入力文字列が UTF-8 でエンコードされていると仮定すると、標準ライブラリ (C 11 以降) にはいくつかの手法が含まれています。 UTF-8との間の変換用UTF-16:

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

using namespace std;

// Create a converter using the UTF-8/UTF-16 codecvt
wstring_convert<codecvt_utf8_utf16<wchar_t>> converter;

// Convert a narrow (UTF-8) string to a wide (UTF-16) string
wstring wide = converter.from_bytes(narrow);

// Convert a wide (UTF-16) string to a narrow (UTF-8) string
string narrow = converter.to_bytes(wide);
ログイン後にコピー

例 (オンラインでコンパイル可能および実行可能):

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

int main() {
  // Sample input string in UTF-8 (see notes below for real-world scenarios):
  string s = "おはよう";

  // Create a wstring to store the converted string
  wstring ws;

  // Convert the narrow (UTF-8) string to wide (UTF-16)
  std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> conv;
  ws = conv.from_bytes(s);

  // Print the converted wstring
  wcout << ws << endl;

  return 0;
}
ログイン後にコピー

注:

  1. 入力文字列が実際に UTF-8 でエンコードされていることを確認してください。非 UTF-8 エンコーディングは正しい変換を生成しません。
  2. codecvt_utf8_utf16 コンバーターは、UTF-16 のリトルエンディアンのバイトオーダーを想定しています。システムがビッグエンディアンのバイトオーダーを使用している場合は、codecvt_utf8 の使用を検討してください。代わりに。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート