4

下面的代码想要获取一个字符串并仅输出英文字母表中的小写字母。

string simplifyString(string word)
{
    word.erase(remove_if(word.begin(), word.end(), [](char letter){return !isalpha(letter);}));
    transform(word.begin(), word.end(), word.begin(), tolower);
    return word;
}

int main()
{
    string s = "a.b.c.d.e.f.g.h.";
    cout << simplifyString(s) << endl;;
    return 0;
}

输出为:abcdefgh.fgh

所以代码工作,然后停止工作。到底他妈发生了什么?

4

1 回答 1

11
word.erase(remove_if(...));

这很接近,但并不完全正确。这只会删除remove_if. 您要删除整个范围:

word.erase(remove_if(...), word.end());
于 2012-04-27T21:08:47.850 回答