发布
社区首页 >问答首页 >如何将wchar_t转换为int来显示代码点?

如何将wchar_t转换为int来显示代码点?
EN

Stack Overflow用户
提问于 2010-06-30 13:11:41
回答 1查看 1.9K关注 0票数 1

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

代码语言:javascript
代码运行次数:0
复制
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"&")这样的东西将显示为&: &

难道找不到像这样宽字符的整数值吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-06-30 13:29:44

在C++中,除了字符和其他字符串之外,不能向字符串中添加任何内容。不存在从int (或其他任何内容)到字符串的隐式转换。这就是字符串类型的设计方式。

您要做的是使用字符串流:

代码语言:javascript
代码运行次数:0
复制
std::wstring listcode(wchar_t arg)
{
  std::wostringstream oss;
  oss << static_cast<int>(arg);
  oss << L": ";
  oss << arg;
  return oss.str();
}

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

代码语言:javascript
代码运行次数:0
复制
void listcode(std::wostream os, wchar_t arg)
{
  os << static_cast<int>(arg);
  os << L": ";
  os << arg;
}

这样,如果要将某些内容输出到控制台或文件,可以直接传递std::cout或文件流,如果需要字符串,只需传递字符串流。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3146628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档