warning:deprecated conversion from string constant to 'char *' 解决方案
时间: 2024-02-22 14:59:23 浏览: 131
这个警告信息是因为编译器发现你将一个字符串字面量赋值给了一个非常量的指针变量。因为字符串字面量是只读的,所以在某些情况下,这可能会导致不可预测的行为。为了避免这个警告,你应该将指针变量声明为指向常量的指针,或者使用 strcpy() 函数将字符串字面量复制到一个非常量的字符数组中。示例代码如下:
```
const char *str = "Hello, world!"; // 指向常量的指针
char str2[] = "Hello, world!"; // 非常量字符数组
char *str3 = new char[strlen("Hello, world!") + 1]; // 动态分配内存
strcpy(str3, "Hello, world!"); // 复制字符串
delete[] str3; // 释放内存
```
相关问题
[Warning] deprecated conversion from string constant to 'char*',如何修改代码
这个警告是因为您将一个字符串常量直接赋值给了一个 `char*` 类型的指针变量,而在 C++ 中,将字符串常量赋值给 `char*` 是不被推荐的用法。
为了修复这个警告,可以将 `char*` 类型的指针变量改为 `const char*` 类型的指针变量,示例如下:
```cpp
const char* myString = "Hello, World!";
```
如果需要修改现有代码,请找到出现警告的地方,将相应的 `char*` 类型的指针变量声明改为 `const char*` 类型,并确保相应的函数参数也进行了相应的修改。
这样修改后,编译器将不会再发出 "deprecated conversion from string constant to 'char*'" 的警告。
[Warning] deprecated conversion from string constant to 'char*' [-Wwrite-strings]
这是一个 C++ 编译器的警告信息,意思是说将字符串常量转换为 `char*` 类型已经被废弃,因为字符串常量是只读的,不应该被修改。正确的做法是使用 `const char*` 类型来表示字符串常量。如果您需要将字符串常量转换为 `char*` 类型,可以使用 `strcpy` 或者 `strncpy` 等函数进行复制。
阅读全文