C++ 类型转换const unsigned char* --> const char*的问题

yttyhf2006 2012-01-06 12:10:32
在函数中 有个
const unsigned char* 的变量 szStr;
如果要把szStr的字符串的值赋给一个string类型的变量str
则此时不能直接赋值,需要把szStr转换成const char* 或者 char*
但是本人尝试使用C++中的static_cast转换却失败了,提示

error C2440: “static_cast”: 无法从“const unsigned char *”转换为“const char *”

我现在的问题是如何在不使用C语言的类型转换操作,和reinterpret_cast 的时候把const unsigned char* 转换车成const char* 或者 char*
...全文
2300 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
luciferisnotsatan 2012-01-06
  • 打赏
  • 举报
回复 5
混入C++委员会,提案并通过static_cast能够将“const unsigned char *”转换为“const char *”。等待标准发布,等待编译器厂商支持该功能。
子达如何 2012-01-06
  • 打赏
  • 举报
回复
const unsigned char* p1;
const char* p2 = static_cast<const char*>( static_cast<void*>( const_cast<unsigned char*>(p1)));

我觉得好累~
turing-complete 2012-01-06
  • 打赏
  • 举报
回复
指针的类型转换,不能采用隐式的,你的要求恐怕没法满足。
oxwuag 2012-01-06
  • 打赏
  • 举报
回复
本质都是这个

const unsigned char* p1;
const char* p2;
__asm
{
mov eax,dword ptr [p1]
mov dword ptr [p2],eax
}
平凡的思想者 2012-01-06
  • 打赏
  • 举报
回复
这种情况,直接采用c方式强制转换不就ok了,没必要死扣所谓的c++风格。
一叶之舟 2012-01-06
  • 打赏
  • 举报
回复
template <class src,class dst>
dst f(src TS,dst& TD)
{
union
{
dst mdst;
src m_src;
}m;
m.m_src=TS;
TD=m.mdst;
return TD;
}

int main()
{
char *p=new char[2];
unsigned char *up=0;
unsigned char *up1=f(p,up);
return 0;
}

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧