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