编译报错24 5 C:\Users\lenovo\Desktop\姓名1.cpp [Warning] deprecated conversion from string constant to 'char*' [-Wwrite-strings]
时间: 2024-02-03 21:12:36 浏览: 29
这个编译警告是因为你在代码中使用了 string constant (字符串常量),而将其赋值给了一个 `char*` 类型的变量,这种转换已经被弃用了。
举例来说,下面的代码就会触发这个警告:
```cpp
char *str = "Hello, World!";
```
正确的做法是使用 `const char*` 类型的指针来指向字符串常量,或者使用 `char[]` 数组来存储字符串:
```cpp
const char *str = "Hello, World!";
// 或者
char str[] = "Hello, World!";
```
这样就不会触发编译警告了。
相关问题
96 23 C:\Users\Administrator\Desktop\4.cpp [Warning] deprecated conversion from string constant to 'char*' [-Wwrite-strings]
这个警告是因为你在使用一个字符串常量来初始化一个 `char*` 类型的指针变量,这种写法在 C++11 标准之前是合法的,但是在 C++11 标准之后被废弃了,因为字符串常量是只读的,不能通过指针变量修改它们的值,如果你想要修改字符串常量的值,应该使用字符数组类型的变量来代替指针变量。
解决这个警告的方法有两种:
1. 将 `char*` 类型的指针变量改为 `const char*` 类型的指针变量,这样编译器就不会报警告了,但是你需要注意不能通过指针变量修改字符串常量的值。
2. 将 `char*` 类型的指针变量改为字符数组类型的变量,这样就可以修改字符串常量的值了,但是你需要注意数组的大小,不能越界。
例如,将 `char*` 类型的指针变量改为 `const char*` 类型的指针变量的代码如下:
```c++
const char* str = "Hello, world!";
```
将 `char*` 类型的指针变量改为字符数组类型的变量的代码如下:
```c++
char str[] = "Hello, world!";
```
87 39 C:\Users\lenovo\Desktop\最后一次2.cpp [Warning] deprecated conversion from string constant to 'char*' [-Wwrite-strings]
这是一个编译器的警告信息,它告诉你在C++代码中存在一个已弃用的转换,即将一个字符串常量转换为`char*`类型。警告的具体内容是:
```
deprecated conversion from string constant to 'char*'
```
警告的代码行号是`87`和`39`,文件地址是`C:\Users\lenovo\Desktop\最后一次2.cpp`。
在C++中,字符串常量是不能被修改的,而`char*`类型是可以被修改的。因此,将一个字符串常量转换为`char*`类型可能会导致程序运行时错误,例如数据损坏、内存泄漏等问题。为了避免这种情况发生,编译器会提示该警告信息。
为了消除这个警告,你可以将`char*`类型的变量改为`const char*`类型,或者使用`std::string`类型来处理字符串。例如,将:
```c++
char* str = "Hello, World!";
```
改为:
```c++
const char* str = "Hello, World!";
```
或者:
```c++
std::string str = "Hello, World!";
```