Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema con remove_if

Estas en el tema de Problema con remove_if en el foro de C/C++ en Foros del Web. Buenas, estoy intentando usar la función remove_if para eliminar espacios en blanco de una cadena de caracteres de bajo nivel. He aquí la función que ...
  #1 (permalink)  
Antiguo 08/04/2014, 07:48
 
Fecha de Ingreso: octubre-2012
Mensajes: 37
Antigüedad: 11 años, 6 meses
Puntos: 0
Problema con remove_if

Buenas, estoy intentando usar la función remove_if para eliminar espacios en blanco de una cadena de caracteres de bajo nivel. He aquí la función que he diseñado:

Código C++:
Ver original
  1. #include <iostream>
  2. #include <cstring>
  3. #include <algorithm>
  4. #include <cctype>
  5. #include <string>
  6. using namespace std;
  7.  
  8. class EsBlanco {
  9. public:
  10.   bool operator() (const char& c) const { return std::isspace(c); }
  11. };
  12.  
  13. int main() {
  14.   string s = "4539 4512 0398 7356";
  15.   char *letras = new char [s.length() + 1];
  16.   strcpy (letras, s.c_str());
  17.  
  18.   char * inicio = letras;
  19.   char * fin = letras + s.length();
  20.  
  21.   fin = std::remove_if(inicio,fin,EsBlanco());
  22.  
  23.   for (char * p = inicio; p != fin; ++p)
  24.      cout  << *p;
  25.   return 0;
  26. }

El problema que ocurre es que elimina los 3 espacios en blanco que hay en el string pero el numero resultante es: 4539451203987356356

Creo que se vuelven a repetir los 3 últimos números porque se eliminaron los otros 3 huecos de los espacios. Alguien podría guiarme para encontrar una solución

Última edición por DvNe; 08/04/2014 a las 09:56

Etiquetas: int, numero, string, usar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:41.