出于调试原因,我想将一个无符号字符附加到 wstring 中。
但是,我没有找到将 unsigned char 转换为 wstring 的函数,所以我无法附加它。
编辑:到目前为止发布的解决方案并没有真正满足我的需要。我想将 0 转换为“0”。迄今为止的解决方案将 0 转换为 0 字符,但不转换为“0”字符串。
有人可以帮忙吗?
谢谢你。
unsigned char SomeValue;
wstring sDebug;
sDebug.append(SomeValue);
将 char 附加到字符串(或者在这种情况下,将 wchar_t 附加到 wstring)的正确调用是
sDebug.push_back(SomeValue);
要将您的 char 扩展为 wchar_t,您还可以使用std::btowc,它将根据您当前的语言环境进行扩展。
sDebug.push_back(std::btowc(SomeValue));
只需将您的 unsigned char 转换为 char:
sDebug.append(1, static_cast<char>(SomeValue));
如果你想使用 operator+ 试试这个:
sDebug+= static_cast<char>(SomeValue);
甚至这样:
sDebug+=boost::numeric_cast<char>(SomeValue);
有一个重载append
也需要附加给定字符的次数:
sDebug.append(1, SomeValue);
但是,这将导致 和 之间的unsigned char
转换wchar_t
。也许你想SomeValue
成为一个wchar_t
。
wstring 有一个接受 char 的构造函数。这将从一个字符创建一个 wstring,然后您可以附加它。