问题与处理策略
问题描述
const char* str = "Hello World";
str[0] = 'A';
- 在 C++ 开发中,执行上述代码,报如下错误
E0137 表达式必须是可修改的左值
C3892 “str”: 不能给常量赋值
问题原因
-
"Hello World"是一个字符串字面量,在 C++ 中,字符串字面量是存储在只读内存区的常量 -
const char*表示声明了一个指向常量字符的指针,不能通过这个指针修改它指向的内容 -
当修改
str[0]时,是在修改一个常量字符串,这是不允许的
处理策略
- 如果想修改字符串,应该使用字符数组而不是指针
char str[] = "Hello World";
str[0] = 'A';
- 或者,使用动态分配内存
#include <string.h>
...
char* str = new char[12];
strcpy(str, "Hello World");
str[0] = 'A';

2059

被折叠的 条评论
为什么被折叠?



