提问人: 提问时间:6/22/2022 更新时间:6/22/2022 访问量:511
wchar_t十六进制格式转换为 std::string
wchar_t to std::string in hex format
问:
我正在尝试将 a 转换为十六进制,然后将其转换为 .wchar_t
std::string
这是我的代码:
#ifdef _DEBUG
std::clog << wchar << std::endl;
#endif
wchar_t wideChar = printf("0x%x", wchar);
#ifdef _DEBUG
std::clog << wideChar << std::endl;
#endif
std::string str = "";
str.assign(wideChar, 4);
#ifdef _DEBUG
std::clog << str << std::endl;
#endif
wchar 是 wchar_t 类型的变量,它具有动态值。在此示例中,我使用的值为 69,它相当于 E 键。
首先,我将 wchar 转换为另一个wchar_t,这个 wideChar 包含十六进制值。这符合预期,只是它还有一个我不需要/不想要的角色。
最后,我试图将宽字符转换为字符串,但失败得很厉害。这背后的想法是我只需要十六进制数的前 4 个字母(比如0x45而不是0x454)。
输出示例:
69
0x454
♦♦♦♦
我遇到的最大问题是字符串中只有这个奇怪的符号。我想将 wchar 完全按原样转换为字符串,但我想删除最后一个字符。
所需的输出应为:
69
0x454
0x45
有人可以告诉我我的代码做错了什么,以及我如何才能正确地做到这一点。提前致谢。
答:
0赞
Ted Lyngmo
6/22/2022
#1
这:
str.assign(wideChar, 4);
使用此重载:
constexpr basic_string& assign( size_type count, CharT ch );
由于您分配了传输到的字符数stdout
wchar_t wideChar = printf("0x%x", wchar);
to ,则为 ( 使其成为 4 个字符)。wideChar
wideChar
4
0x45
因此,您为字符串分配了四个 s,使其成为 .char(4)
"\004\004\004\004"
评论
wchar_t wideChar = printf("0x%x", wchar);
?什么?返回传输到输出流的字符数。printf
wchar_t