从以下
我可以将unsigned char转换为char,反之亦然吗?
似乎将a转换basic_string
为a basic_string
(即std::string
)是有效的操作.但我无法弄清楚该怎么做.
例如,哪些功能可以执行以下转换,填写这些假设stou
和utos
功能的功能?
typedef basic_stringu_string; int main() { string s = "dog"; u_string u = stou(s); string t = utos(u); }
我试图使用reinterpret_cast
,static_cast
和其他一些人,但我对其预期功能的了解是有限的.
假设您希望将原始文件中的每个字符复制并转换,解决方案很简单
u_string u(s.begin(), s.end()); std:string t(u.begin(), u.end());
u
任何内容的形成都是直截了当的s
,因为从转换signed char
到unsigned char
简单地使用模运算.无论char
是实际signed
还是unsigned
.
t
如果char
实际上signed char
并且任何单个字符u
具有超出a signed char
可以表示的范围的值,则将形成未定义的行为.这是因为a的溢出signed char
.对于您的特定示例,通常不会发生未定义的行为.