首頁 > 後端開發 > C++ > 如何在 C 中將字串(或字元)轉換為 wstring(或 wchar_t)?

如何在 C 中將字串(或字元)轉換為 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 將字符串(或char)轉換為wstring(或wchar_t

問題:

給定一個字串或字元變量,我們如何將其內容分配給wstring 或 wchar_t 變數?

解:

假設輸入字串以 UTF-8 編碼,標準函式庫(C 11 及更高版本)包括UTF-8 和 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 編碼不會產生正確的轉換。 codecvt_utf8_utf16 轉換器假設 UTF-16 為小端位元組順序。如果您的系統使用大端位元組順序,請考慮使用 codecvt_utf8相反。

以上是如何在 C 中將字串(或字元)轉換為 wstring(或 wchar_t)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板