首页 > 后端开发 > 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 编码不会产生正确的转换。
  2. codecvt_utf8_utf16 转换器假定 UTF-16 为小端字节顺序。如果您的系统使用大端字节顺序,请考虑使用 codecvt_utf8相反。

以上是如何在 C 中将字符串(或字符)转换为 wstring(或 wchar_t)?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板