/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Problema con remove_if

 
      Índice del Foro elrincondelc.com -> C/C++ en General
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
DvNe



Registrado: 02 Abr 2014
Mensajes: 5

MensajePublicado: 08/04/2014 7:47 am
Título: 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:
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cctype>
#include <string>
using namespace std;

class EsBlanco {
public:
  bool operator() (const char& c) const { return std::isspace(c); }
};

int main() {
  string s = "4539 4512 0398 7356";
  char *letras = new char [s.length() + 1];
  strcpy (letras, s.c_str());
 
  char * inicio = letras;
  char * fin = letras + s.length();
 
  fin = std::remove_if(inicio,fin,EsBlanco());
 
  for (char * p = inicio; p != fin; ++p)
     cout  << *p;
  return 0;
}

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
Volver arriba
untio



Registrado: 17 Sep 2008
Mensajes: 380
Ubicación: MICA S.A.

MensajePublicado: 14/04/2014 8:25 am
Título:

Hola,

Lo primero, decir que yo también estoy aprendiendo.

El problema de tu código es que calculas la longitud de la cadena antes de quitar los espacios, pero no la vuelves a recalcular cuando los quitas, de ese modo tu bucle va 3 posiciones más allá del final.

Perdóname si estoy equivocado.

Saludos.
_________________
Hago algo muy raro: primero leo las instrucciones.
Volver arriba
      Índice del Foro elrincondelc.com -> C/C++ en General
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com