【发布时间】:2022-01-04 20:00:39
【问题描述】:
我想知道我们是否可以通过指向它的指针来修改 std::string 值。请考虑以下示例。
#include <iostream>
void func(std::string *ptr) {
*ptr = "modified_string_in_func";
}
int main()
{
std::string str = "Original string";
func(&str);
std::cout << "str = " << str << std::endl;
return 0;
}
我尝试了 GCC、Clang 和 Visual C++。所有人都在修改字符串 valirable str 没有任何警告或错误,但我不太确定这样做是否合法。
请澄清。
【问题讨论】:
-
完全合法,你用string函数修改字符串。
-
阅读友好文档 std::string :) - cplusplus.com/reference/string/string 尤其是运算符 = : cplusplus.com/reference/string/string/operator= 。运算符重载以处理 char、char* 和 std::string 副本。
-
感谢您的回复。这两个字符串对象是如何销毁的?
-
查看上面文档中的 destructor() 链接。
标签: c++ string pointers stdstring