我想要的字符串操作过程:如果有一个以上连续的字符实例,只保留第一个字母。鉴于“Steelsmith”,删除第一个“e”,留下字符串“Stelsmith”。
这是我的算法:
void replace(string s)
{
int length = s.length();
for (int i = 0; i < length; i ++)
{
if (s[i] == s[i + 1])
{
s.erase(1+i);
}
}
cout << s << endl;
}
当我输入“Steelsmith”时,输出为“Ste”,因此它会删除第二个'e'以及字符串的其余部分。如何保留原始字符串的其余部分?
答案 0 :(得分:7)
您可以使用内置方法对此进行编码:
s.erase(std::unique(s.begin(), s.end()), s.end());
希望这有所帮助,祝你好运!
答案 1 :(得分:1)
使用表格:string& erase (size_t pos = 0, size_t len = npos);
参数是位置和长度:
s.erase( i+1 , 1 ) ;
您可以在此处看到它:http://ideone.com/GhWoi0