我有:
unsigned char *foo(); std::string str; str.append(static_cast(foo()));
错误: invalid static_cast from type ‘unsigned char*’ to type ‘const char*’
在C++风格中投射的正确方法是什么?
char *
并被const unsigned char *
认为是不相关的类型.所以你想要使用reinterpret_cast
.
但是如果你要从const unsigned char*
非const
类型转变,你需要先使用const_cast
.reinterpret_cast
不能抛弃const
或volatile
资格.
尝试 reinterpret_cast
unsigned char *foo(); std::string str; str.append(reinterpret_cast(foo()));
reinterpret_cast的
unsigned char*基本上是一个字节数组,通常用于表示原始数据而不是字符串.unicode字符串将表示为wchar_t*
根据C++标准,unsigned char*和char*之间的reinterpret_cast是安全的,因为它们具有相同的大小并且具有相同的构造和约束.我总是试图避免reintrepret_cast比const_cast更多.
如果静态转换失败了你正在做的事情你可能想重新考虑你的设计,因为坦率地说,如果你使用的是C++,你可能想利用"plus plus"部分提供的东西并使用字符串类和STL(aka std :: basic_string可能对你更好)
您需要使用a,reinterpret_cast<>
因为您之间的两种类型彼此无关.