为什么函数不能在字符串上工作?

时间:2017-12-28 09:42:48

标签: c++11

#include <iostream>
#include <string>
using namespace std;
void chuli(string a)
{
    a.erase(0,2);
}

int main()
{
    string a = "012345";
    a = chuli(a);
    cout << a; 
}

我是C ++的初学者,我想知道为什么在这个函数之后,这个字符串没有改变。这是关于命名空间的吗?

1 个答案:

答案 0 :(得分:3)

字符串按值传递,因此您的操作将应用于对象的副本。 如果需要修改值,则需要通过指针或引用传递它:

void chuli(string &a)
{
    a.erase(0,2);
}

void chuli(string *a)
{
    a->erase(0,2);
}