C++ forbids converting a string constant to ‘char*’
时间: 2024-06-13 12:07:21 浏览: 22
这个错误通常出现在将字符串常量赋值给 char* 类型的变量时。在 C++ 中,字符串常量是 const char* 类型的,而 char* 类型的变量不允许指向 const 类型的数据。因此,将字符串常量赋值给 char* 类型的变量会导致编译器报错。
解决这个问题的方法是将 char* 类型的变量改为 const char* 类型,或者使用 strcpy 函数将字符串常量复制到 char* 类型的变量中。
例如,下面的代码会导致上述错误:
```
char* str = "Hello, world!";
```
应该改为:
```
const char* str = "Hello, world!";
```
或者:
```
char str[] = "Hello, world!";
```
相关问题
ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
这个错误是因为在使用字符串常量 "abc" 和 "bdc" 时,将其直接赋值给了 char* 类型的 name 变量,这是不被允许的。在 C++ 中,字符串常量是 const char* 类型的,因此将其直接赋值给 char* 类型的变量会导致编译器报错。
要解决这个问题,可以将 char* 类型的 name 变量改为 const char* 类型,或者使用 strcpy 函数将字符串常量复制到动态分配的内存中。例如,可以将 namelist 类的构造函数修改为:
```
namelist(const char *p) {
name = new char[strlen(p) + 1];
if (name != nullptr) {
strcpy(name, p);
}
}
```
同时,在主函数中创建对象时也需要使用 const char* 类型的字符串常量,例如:
```
namelist n1("abc"), n2("bdc");
```
这样就可以避免这个错误了。
iso c++ forbids converting a string constant to 'char*' [-wwrite-strings]
这个错误信息是因为在 C++ 中,字符串常量(例如 "hello")默认是 const char* 类型,不能直接赋值给 char* 类型的变量。因为字符串常量是只读的,如果将其赋值给 char* 类型的变量,就可以通过这个变量修改字符串常量的内容,这是不被允许的。
解决这个问题的方法是将变量的类型改为 const char*,或者使用 strcpy() 函数将字符串常量的值复制到 char* 类型的变量中。
相关推荐
![application/pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![application/x-zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)