我的string::find实现存在一个小问题。
输入是一个长字符串,其中包含以下示例:input =“one_thousand_and_fifty_one”。
我的问题似乎是,在包含多个“和”的输入字符串中,只有第一个和被删除,而其他则没有。
到目前为止,这是我的代码,找到“and”,但仅删除“a”之前的字母不是“s”(表示“千”)时。
string toKill = "and";
size_t andF = input.find(toKill);
if (andF != string::npos) {
if (input[(andF - 1)] != 's') {
input.erase(andF, 4);
}
}
编辑:我忘了提及,输入中唯一包含“和”的其他单词是“千”,因此这是一种特殊情况。
最佳答案
试试这个:
string toKill = "and";
size_t andF = 0;
while ((andF = input.find(toKill, andF)) != string::npos) {
if (andF == 0 || input[andF - 1] != 's') {
input.erase(andF, 4);
}
else ++andF;
}