我在主函数中使用它时,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将修改的本地副本one和two.
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)
| 归档时间: |
|
| 查看次数: |
364 次 |
| 最近记录: |