char*默认为const怎么更改?

1

img


报错:不能将 "const char *" 类型的值分配到 "char星号" 类型的实体
可是我并没有加const,C++好像默认char星号是const?
怎么做才能把下面的coffee字符串传入ppc数组中去?

但是在qt5中输入这样的代码是不会报错的?

只能用strcpy去赋值吗?

//因为csdn里输入星号是加粗或者斜体 所以把星号用中文写了 不然显示不出来

"coffee" 是字面常量, 你代码中有个矛盾处,

上面的是当普通数组拷贝, 下面的当指针指向字面常量

    strcpy(ppc[0], "coffee");
    ppc[1] = "coffee";

要不

    const char **ppc = new const char *[5] { nullptr };
    ppc[2] = "coffee";

要不

    char **ppc = new char *[5] { nullptr };
    ppc[0] = new char[10];
    strcpy(ppc[0], "coffee");

要不按楼上的强转一下, 但你要清楚, 这不是拷贝, 是指向不可更改的字面常量, 不可更改字符. 以下的是错的.

    ppc[2][1] = 't';

ppc[1] = (char *)("coffee1");

是的,或者用string保存,不能用c这种写法

【以下回答由 GPT 生成】

在C++中,char类型的数据默认是指向常量的,即const char类型。如果你想将一个字符串传入一个char类型的数组,你可以使用以下方法来修改默认的const char类型:

  1. 使用strcpy函数: ```cpp #include

const char* str = "Hello"; char ppc[10];

strcpy(ppc, str); ``` 这里使用了strcpy函数来将const char类型的字符串复制到char类型的数组ppc中。

  1. 使用强制类型转换(不推荐): cpp const char* str = "Hello"; char* ppc = const_cast<char*>(str); 这里使用了const_cast来将const char类型转换为char类型。但是这种方式不推荐使用,因为修改常量字符串可能导致未定义的行为。

  2. 使用std::string: 如果你使用C++标准库的std::string类,那么你可以直接将const char类型的字符串赋值给std::string对象,然后使用c_str()函数将其转换为const char类型: ```cpp #include

const char str = "Hello"; std::string strObj = str; const char ppc = strObj.c_str(); ``` 这里使用std::string类先将const char类型的字符串赋值给strObj对象,然后使用c_str()函数将其转换为const char类型。

总结: - 使用strcpy函数是一种常见且安全的方法来将const char类型的字符串复制到char类型的数组中。 - 强制类型转换可以将const char类型转换为char类型,但不推荐使用。 - 如果使用std::string类,则可以方便地处理字符串,包括将const char*类型的字符串赋值给std::string对象,并使用c_str()函数进行类型转换。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

1.做强制类型转换,(char*)字符串。
2.用stl的string存储