为什么在这种情况下不允许字符串交换

时间:2013-05-24 22:14:12

标签: c++ string

我有一个功能

void foo(string *input) {
    string temp = "";
    input->swap(&temp);
}

但这似乎不起作用......我想原因是temp是一个时间变量 因为我们离开这个功能会被取消分配吗?

1 个答案:

答案 0 :(得分:3)

std::string的{​​{3}}成员函数接受引用,而不是指针:

input->swap(temp);

另外,我建议您使用标准库的示例,并让您的foo()函数也接受引用而不是指针:

void foo(string& input) {
    string temp = "";
    input.swap(temp);
}