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#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];
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