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());