从 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 *

将 UIImage 数据转换为 const unsigned char myArry[100]

SWIG 将 const unsigned char example[] 包装到 Java byte[] 作为参数