gpt4 book ai didi

c++ - 如何将 wchar_t 转换为 int 以显示代码点?

转载 作者:行者123 更新时间:2023-11-30 03:10:26 25 4
gpt4 key购买 nike

我的程序中有一个简单的函数,当我想弄乱 unicode 并用它做一些事情时。在这个函数中,我希望显示用户输入的字符的代码值。这似乎是可能的,这是我的功能:

wstring listcode(wchar_t arg) {
wstring str = L"";
str += static_cast<int> (arg); //I tried (int) arg as well
str += L": ";
str += (wchar_t) arg;
return str;
}

现在如你所见,我只想显示整数值(如 ascii 字符,如 (int) "a"),但类似于 listcode(L"&") 将显示为 &: & !

这样一个宽字符的整数值是不是不可能求出来?

最佳答案

在 C++ 中,您不能向字符串添加任何内容,只能添加字符和其他字符串。没有从 int(或其他任何东西)到字符串的隐式转换。这就是字符串类型的设计方式。
您要做的是使用字符串流:

std::wstring listcode(wchar_t arg)
{
std::wostringstream oss;
oss << static_cast<int>(arg);
oss << L": ";
oss << arg;
return oss.str();
}

然而,在实践中,当在 C++ 中转换为字符串时,最好让函数写入流,而不是返回字符串:

void listcode(std::wostream os, wchar_t arg)
{
os << static_cast<int>(arg);
os << L": ";
os << arg;
}

那样的话,如果你想输出一些东西到控制台或者文件,你可以直接传递std::cout或者一个文件流,如果你想要一个字符串,你只需要传递字符串流。

关于c++ - 如何将 wchar_t 转换为 int 以显示代码点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3146628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com