字符串作为参数?

ofe*_*fey 6 c++ string parameters reference

如果我不打算修改字符串,那么第一个选项更好或者两者都相同 -(我只想迭代字符串,但由于字符串大小很大,我不希望进行本地复制.)

int getString(string& str1) {
    //code
}


int getString (string str1) {
    //code
}
Run Code Online (Sandbox Code Playgroud)

如果我打算改变字符串,那两者之间有什么区别吗?是因为字符串在C++中是不可变的吗?

Luc*_*ore 11

字符串文字是不可变的,std::strings不是.

第一个是传递参考.如果您不打算修改字符串,请通过const引用传递它.

第二个是按值传递 - 如果你修改了函数内部的字符串,你只需修改一个副本,所以这没有实际意义.


小智 9

为什么不通过const引用?这样既不会复制,也不会被调用的函数能够修改字符串.

int getString(string const &str1)
{
}
Run Code Online (Sandbox Code Playgroud)