从无符号const char*到char const*的类型转换

Type cast from unsigned const char * to char const *

本文关键字:const char 类型转换 无符号      更新时间:2023-10-16

我想将unsigned const char *转换为char const *,以便传递到strcpy函数

请建议一些方法

(const char *) my_signed_char

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

这对我有效;这是你想的吗?

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

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