Eliminando comillas de una cadena

C++:
Eliminando comillas de una cadena

Cómo hacerlo:

Aquí hay una forma sencilla de deshacerse de esas comillas en 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"("Hola, 'Mundo'!")";
    std::string sin_comillas = remove_quotes(original);
    std::cout << sin_comillas << std::endl;
    return 0;
}

Ejecuta esto, y obtendrás:

Hola, Mundo!

¡Voilà! Las comillas han desaparecido.

Análisis Profundo

Las comillas han sido una molestia textual desde el amanecer de la computación. En el pasado, verías a los programadores pasando laboriosamente por cada carácter para filtrar esas comillas. Hoy, tenemos std::remove en la Biblioteca de Plantillas Estándar (STL) para hacer el trabajo pesado.

¿Alternativas? ¡Por supuesto! Podrías usar expresiones regulares con std::regex para apuntar a las comillas, pero eso es un poco como usar un martillo para romper una nuez: poderoso, pero puede ser excesivo para tareas simples. Para aquellos que favorecen las versiones recientes de C++, podrían experimentar con std::string_view para enfoques no modificadores.

En cuanto a la implementación, recuerda que std::remove en realidad no elimina elementos del contenedor; reubica los elementos no eliminados hacia adelante y devuelve un iterador más allá del nuevo final del rango. Por eso necesitamos el método erase para cortar la cola no deseada.

Ver También