如何修改函数中的字符串?

时间:2013-02-18 03:42:13

标签: c++ string function pointers

说我有

string stringInput = "hello";

alter(stringInput);

cout << stringInput;

和一个功能:

void alter(string stringIn){
     stringIn[0] = stringIn[3];
}

理想情况下,我希望cout产生“lello”。但是现在它只是像原来那样返回“你好”。我知道这与地址和指针有关......我将如何实现这一目标?

3 个答案:

答案 0 :(得分:4)

您需要做的就是通过引用传递字符串:

void alter(string& stringIn){
     //          ^
     stringIn[0] = stringIn[3];
}

您还应该相应地修改alter()的所有函数声明。

答案 1 :(得分:4)

实际上,这只是因为创建了一个新的字符串副本以供在函数中使用。要在函数中直接修改字符串,请添加&amp;在函数头中的字符串名称之前,如下所示:

 void alter(string &stringIn){

通过引用传递字符串。否则你只能从函数中返回一个字符串。

答案 2 :(得分:2)

您的stringIn是一个局部变量。因此,当您将函数作为值传递给它时,它只会生成一个具有不同地址的新stringIn。因此,您在alter中所做的更改只会影响新的stringIn。您需要在alter中接收stringIn的引用才能使其正常工作。

void alter(string& stringIn){

 stringIn[0] = stringIn[3];
}