У меня есть строки следующего формата: «name.bag.csv» Я хотел бы удалить «.bag» из строки. Это пример кода, который я пытаюсь запустить:
csv_file_name = "loololololool.bag.csv";
csv_file_name.erase(csv_file_name.end()-8, 4);
std::cout << csv_file_name << std::endl;
Но я получаю сообщение об ошибке во второй строке:
no matching function for call to ‘std::__cxx11::basic_string<char>::erase(__gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char> >, int)’
csv_file_name.erase(csv_file_name.end()-8, 4);
Кажется, он принимает только один аргумент. Однако, если я сделаю:
csv_file_name = "loololololool.bag.csv";
csv_file_name.erase(13, 4);
std::cout << csv_file_name << std::endl;
, это, кажется, работает нормально. Также, когда я выполняю
csv_file_name = "loololololool.bag.csv";
csv_file_name.erase(csv_file_name.end()-8);
std::cout << csv_file_name << std::endl;
, он удаляет один символ, как следует. Как это может случиться? csv_file_name.end()-8
должен работать, поскольку он удаляет один символ. И два аргумента должны работать. Но комбинация не? Пожалуйста, помогите!