我可以重新解释演员阵容,而且大部分时间都会被提出来,会发出警告,所以我想知道是否还有其他选择(或者当然是重新解释演员的干净实施)
答案 0 :(得分:3)
您没有说出提供了什么警告或问题是什么,但使用char*
投射到reinterpret_cast
应该没有任何警告:
unsigned char *a;
const char *b = reinterpret_cast<char*>(a);
答案 1 :(得分:0)
这取决于你想要做什么。
如果您只想以char
的形式访问内容,那么就简单了
static_cast
或使用期望char
的上下文中的值
会做的。
如果需要将缓冲区传递给期望char const*
的函数,
reinterpret_cast
是唯一的解决方案。
如果你想要一个字符串,使用指针进入缓冲区就可以了:
std::string
bufferToString( unsigned char const* buffer, size_t length )
{
return std::string( buffer, buffer + length );
}
或者您可以复制到现有字符串中:
myString.assign( buffer, buffer + length );
myString.append( buffer, buffer + length );
// etc.
任何字符串函数(或算法,如std::copy
),需要两个
可以使用迭代器。所需要的就是解除引用
迭代器导致一个隐式转换为char
的类型,即
unsigned char
的情况。
(你不能使用带有缓冲区地址和字符串的字符串函数
长度,因为这些不是模板,并且需要缓冲区地址
有类型char const*
。而unsigned char
隐含地转换
到char
,unsigned char*
需要reinterpret_cast
来转换它
到char*
。)