c++ remove 删除string内所有指定的字符
对于字符"_L__R__R_"需要删除所有的'_',想要得到结果LRR,该如何处理呢?
可以配合remove和erase一起处理
string s="_L__R__R_"; s.erase(remove(s.begin(), s.end(), '_'), s.end()); cout<<s<<endl;//LRR
为什么要上面那样写呢?需要了解下remove的用法
auto it=remove(s.begin(), s.end(), '_'); cout<<s<<endl;
可以得到s的输出为 LRR_R__R_,似乎和我们想要的LRR不一致。
因为remove这个函数没有调整容器的大小,只是把要得到的结果移动到了最前面。remove返回的it迭代器指向LRR后的_。
因此还要配合erase把LRR_R__R_从it迭代器开始后面的内容删除
s.erase(it,s.end());
