交换字符串值不适用于函数 - C++

Ins*_*Man 1 c++

我在主函数中使用它时,swap(string1,string2)将轻松交换两个字符串值,但如果我在另一个函数中使用它并从main函数调用它将无法工作!

这工作:

int main()
{
    string name1="A",name2="B";
    swap(name1,name2);
}
Run Code Online (Sandbox Code Playgroud)

但这个没有:

string name1="A",name2="B"; // Global Here
void exchange (string one,string two)
{
    swap(one,two);
}

int main()
{
   exchange(name1,name2);
}
Run Code Online (Sandbox Code Playgroud)

问题出在哪儿?

小智 6

通过字符串引用而不是通过值,否则exchange将修改的本地副本onetwo.

string name1="A", name2="B"; // Global Here

void exchange(string& one, string& two)
{
    swap(one,two);
}

int main()
{
    cout << name1 << "\n" << name2 << endl;
    exchange(name1, name2);
    cout << name1 << "\n" << name2 << endl;
}
Run Code Online (Sandbox Code Playgroud)

输出:

A
B
B
A
Run Code Online (Sandbox Code Playgroud)