4

出于调试原因,我想将一个无符号字符附加到 wstring 中。

但是,我没有找到将 unsigned char 转换为 wstring 的函数,所以我无法附加它。

编辑:到目前为止发布的解决方案并没有真正满足我的需要。我想将 0 转换为“0”。迄今为止的解决方案将 0 转换为 0 字符,但不转换为“0”字符串。

有人可以帮忙吗?

谢谢你。

unsigned char SomeValue;
wstring sDebug;

sDebug.append(SomeValue);
4

4 回答 4

12

将 char 附加到字符串(或者在这种情况下,将 wchar_t 附加到 wstring)的正确调用是

sDebug.push_back(SomeValue);

文档在这里

要将您的 char 扩展为 wchar_t,您还可以使用std::btowc,它将根据您当前的语言环境进行扩展。

sDebug.push_back(std::btowc(SomeValue));
于 2013-03-28T18:09:58.953 回答
3

只需将您的 unsigned char 转换为 char:

sDebug.append(1, static_cast<char>(SomeValue));

如果你想使用 operator+ 试试这个:

sDebug+= static_cast<char>(SomeValue);

甚至这样:

 sDebug+=boost::numeric_cast<char>(SomeValue);
于 2013-03-28T18:10:22.073 回答
0

有一个重载append也需要附加给定字符的次数:

sDebug.append(1, SomeValue);

但是,这将导致 和 之间的unsigned char转换wchar_t。也许你想SomeValue成为一个wchar_t

于 2013-03-28T18:06:54.493 回答
0

wstring 有一个接受 char 的构造函数。这将从一个字符创建一个 wstring,然后您可以附加它。

于 2013-03-28T18:08:13.790 回答