4

我想转换unsigned const char *char const *传递给strcpy函数

请提出一些方法

4

3 回答 3

7
(const char *) my_signed_char

在 C++ 中,有更多惯用的方法来转换它,但是由于您使用的是 strcpy,因此您似乎不是在编程惯用的 C++。

于 2013-02-20T06:44:00.270 回答
1

在 ANSI CI 中相信它应该可以工作,例如:

#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);
}
于 2013-02-20T06:39:49.010 回答
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 指针是不应写入其数据的指针。

于 2013-02-20T06:36:12.093 回答