从unsigned const char *到char const *的类型转换

时间:2013-02-20 06:30:57

标签: c++ c visual-c++

我想将unsigned const char *转换为char const *以传入strcpy函数

请提出一些方法

3 个答案:

答案 0 :(得分:7)

(const char *) my_signed_char

在C ++中有更多惯用的方法来演绎这个,但是因为你使用的是strcpy,所以你似乎没有编写惯用的C ++。

答案 1 :(得分:1)

这对我有用;这是你的想法吗?

#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指针是一个不应该写入数据的指针。

答案 2 :(得分:1)

在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);
}