string 中对erase的提问

#include<iostream>
using namespace std;
int main()
{
    string s1="abcd",s2;
    s2=s1+s1.erase(s1.size()-1,1); 
    cout<<s2;
}

请问为什么输出的是abcabc,而不是abcdabc,谢谢!

因为 s1.erase 的时候 s1 已经被修改,所以后面相加, s1是改变后的值

erase() 方法会修改原始字符串,并返回修改后的字符串