C++中string与wstring相互转换

木头的喵喵拖孩

C++中 string 与 wstring 相互转换

它们俩相互转化有一个前提条件,string 的编码格式需要是utf8(一般系统默认编码)。
(wstring 类型一般是 utf16 或 utf32,一般用于 windows 系统)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <string>
#include <locale>
#include <codecvt>

/**
* 将std::wstring转换为的std::string
*/
std::string wstr2str(const std::wstring &wstr)
{
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
std::string str = converter.to_bytes(wstr);
return str;
}

/**
* 将std::string转换为的std::wstring
*/
std::wstring str2wstr(const std::string &str)
{
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
std::wstring wstr = converter.from_bytes(str);
return wstr;
}

/**
* 将std::string转换为的char*
*/
char *str2cstr(const std::string &str) {
return str.c_str();
}

/**
* 将std::wstring转换为的wchar_t*
*/
wchar_t *wstr2wcstr(const std::wstring &wstr) {
return wstr.c_str();
}

补充

1
2
3
4
5
// utf8字符串,是一种变长字符串,中文字符、英文字符、数字字符的字节数不相同
std::string u8str = u8"可以有中文,English,数字123等";

// 宽字符串,是一种定长字符串,每个字符的字节数都相同,一般在Windows系统下使用
str::wstring lstr = L"可以有中文,English,数字123等";
  • 标题: C++中string与wstring相互转换
  • 作者: 木头的喵喵拖孩
  • 创建于: 2024-10-17 14:53:15
  • 更新于: 2024-10-17 16:29:09
  • 链接: https://blog.xx-xx.top/2024/10/17/C-中string与wstring相互转换/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
此页目录
C++中string与wstring相互转换