我想将unsigned const char *
转换为char const *
以传入strcpy
函数
请提出一些方法
答案 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);
}