从 unsigned const char * 类型转换为 char const *
Posted
技术标签:
【中文标题】从 unsigned const char * 类型转换为 char const *【英文标题】:Type cast from unsigned const char * to char const * 【发布时间】:2013-02-20 06:30:56 【问题描述】:我想将unsigned const char *
转换为char const *
以传递给strcpy
函数
请推荐一些方法
【问题讨论】:
现在出现错误“非法演员” “现在出现错误”——“现在”是什么意思?你做了什么——你的代码在哪里?您能否将所有这些都添加到问题中(不在 cmets 中)? 【参考方案1】:(const char *) my_signed_char
在 C++ 中,有更多惯用的方法来转换它,但由于您使用的是 strcpy,因此您似乎不是在编写惯用的 C++。
【讨论】:
【参考方案2】:这对我有用;是你的想法吗?
#include <stdio.h>
#include <string.h>
int main(int argc, char ** argv)
const char foo[] = "foo";
unsigned const char * x = (unsigned const char *) foo;
char bar[20];
strcpy(bar, (const char *)x);
printf("bar=[%s]\n", bar);
return 0;
请注意,如果您尝试将 (unsigned const char *) 指针传递给 strcpy 的第一个参数,那么您可能正在尝试做一些您不应该做的事情(编译器将其标记为错误是正确的) ;因为 strcpy() 将写入其第一个参数指向的内存,而 const 指针是不应写入数据的指针。
【讨论】:
【参考方案3】:在 ANSI C 中,我相信它应该可以正常工作,例如:
#include <string.h>
int main()
const char *s="test";
unsigned const char *d = s;
char dest[1000];
strcpy(dest,d);
您可以尝试添加演员表:
#include <string.h>
int main()
const char *s="test";
unsigned const char *d = s;
char dest[1000];
strcpy(dest,(const char *) d);
【讨论】:
以上是关于从 unsigned const char * 类型转换为 char const *的主要内容,如果未能解决你的问题,请参考以下文章
如何从 const char* 转换为 unsigned int c++
有啥方法可以从 iOS 的 plist 加载 const unsigned char 吗?
使用媒体基金会时如何读取-“unsigned char const *”?
遍历包含“扩展 ASCII”字符的 const unsigned char *