【发布时间】:2022-06-28 13:54:33
【问题描述】:
以这种方式在 C++ 中操作字符串是否可以:
string s = "Sting";
s[2] = 'a';
它工作正常(并打印“Sting”),但这样做安全吗?
如果是,这是否意味着它们是可变的?
【问题讨论】:
-
是的,
std::strings 是可变的。然而,字符串文字不是。 -
这很可能是 C++ 字符串。但是你应该澄清你的意思。
-
注意:
char* s = "content"在 C++ 中已弃用,它应该是不可变的const char* s = "content"。假设您示例中的字符串是 std::string,是的,std::string 和 chars 数组 s[] = "content"(不同于上面的 char*/const char*)是可变的。 -
@T.C:你所说的字符串文字是什么意思,伙计?我认为双引号中的任何内容都是字符串文字,并且如问题中的示例所示,它是可变的。
-
不是。上面的例子在栈上创建了一个字符串对象,并初始化了内存。它拥有“Sting”。 C++ 一点也不像 Java。请找一本好的 C++ 书籍并阅读它。你会很高兴你做到了。