У меня есть небольшая проблема с моей реализацией string :: find.string :: find Issue (C++)
Ввод - длинная строка, состоящая из этого возможного примера: input = "one_thousand_and_fifty_one".
Моя проблема, кажется, заключается в том, что во входной строке, содержащей более одного и более, только первый и удаляется, а другие нет.
Это мой код до сих пор, который находит «и», но удаляется только тогда, когда буква перед «a» не является «s» (что указывает «тысяча»).
string toKill = "and";
size_t andF = input.find(toKill);
if (andF != string::npos) {
if (input[(andF - 1)] != 's') {
input.erase(andF, 4);
}
}
EDIT: Я забыл упомянуть, что только другое слово на входе, который содержит «и» есть «тысяча», так что это особый случай.
Так что же вы делаете с мужем, или band, или grand, или Android? Возможно, вам захочется проверить не альфа, а не просто? Возможно, вы захотите проверить и после этого слова. – paxdiablo
Ну, для «android» он сработает, так как он получит доступ за пределами границ строки: 'input [-1]'. –
@ Майкл, я знаю, что это будет делать, я действительно больше спрашивал, что делать плакат _wanted_ :-) – paxdiablo