C++:
Удаление кавычек из строки
Как это сделать:
Вот простой способ избавиться от кавычек в C++:
#include <iostream>
#include <algorithm>
std::string remove_quotes(std::string input) {
input.erase(std::remove(input.begin(), input.end(), '\"'), input.end());
input.erase(std::remove(input.begin(), input.end(), '\''), input.end());
return input;
}
int main() {
std::string original = R"("Привет, 'Мир'!")";
std::string no_quotes = remove_quotes(original);
std::cout << no_quotes << std::endl;
return 0;
}
Запустите это, и вы получите:
Привет, Мир!
Вуаля! Кавычки исчезли.
Погружение в детали
Кавычки были неприятностью в текстах с самого зарождения вычислительной техники. Раньше видели, как программисты с трудом перебирали каждый символ, чтобы отфильтровать эти кавычки. Сегодня у нас есть std::remove
в Стандартной Шаблонной Библиотеке (STL) для выполнения тяжелой работы.
Альтернативы? Конечно! Вы можете использовать регулярные выражения с std::regex
для поиска кавычек, но это немного как использовать молоток для разбивания орешка - мощно, но может быть избыточно для простых задач. Те, кто предпочитает новые версии C++, могут попробовать std::string_view
для подходов, не предполагающих изменений.
С точки зрения реализации, помните, что std::remove
на самом деле не удаляет элементы из контейнера; он сдвигает неудаленные элементы вперед и возвращает итератор за новый конец диапазона. Вот почему нам нужен метод erase
для отсечения нежелательного хвоста.
Смотрите также
- Справочник по C++
std::remove
: cppreference.com - Больше о манипуляциях со строками в
std::string
: cplusplus.com