В этом вызове нет ничего плохого (при условии, что a[1]
существует и найден в str
хотя бы один раз)
#include <iostream>
#include <string>
int main()
{
std::string str = "Hello, world!";
std::string a = "wwwwww";
str.erase(str.find(a[1]), str.size());
std::cout << str << '\n';
}
тестовый прогон: https://ideone.com/8wibR
РЕДАКТИРОВАТЬ: Ваш полный исходный код не может проверить, действительно ли b[1]
находится в str
. Функция boolStringExists()
возвращает 1
, если a.find(b)
больше нуля, а значение std::string::npos
, которое возвращается, когда b
не найдено в a
, больше нуля.
Чтобы исправить это, не затрагивая остальную часть вашей логики, измените эту функцию на
//check if string exists
bool boolStringExists(string a, string b)
{
return a.find(b) != string::npos;
}