首頁 >後端開發 >C++ >如何有效率地將 C String(或 char 陣列)轉換為 wstring(或 wchar_t 陣列)?

如何有效率地將 C String(或 char 陣列)轉換為 wstring(或 wchar_t 陣列)?

Linda Hamilton
Linda Hamilton原創
2024-12-26 02:12:09769瀏覽

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

C 將字串(或char)轉換為wstring(或wchar_t

問題:

給定一個表示為陣列的字串s字元和 wstring ws,如何在不扭曲原始內容的情況下有效地將 s 的內容轉換為 ws?

答案:

為了解決這個問題,標準庫(C 11 ) 為不同字元編碼之間的轉換提供全面支持,包括UTF-8 和UTF- 16。這是使用標準函式庫的強大解決方案:

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

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

附加說明:

  • codecvt_utf8_utf16 轉換器處理UTF-8 之間的轉換(在輸入字串s) 和UTF-16 (在輸出wstring 中使用ws)。
  • wstring_convert 類別提供了一種方便且有效率的方法來執行這些轉換。
  • 在 C 17 及更高版本中,codecvt 標頭已被棄用,取而代之的是 std::charconv 庫。然而,這裡提出的解決方案應該在可預見的未來繼續有效。

以上是如何有效率地將 C String(或 char 陣列)轉換為 wstring(或 wchar_t 陣列)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn