[ Foro de C++ ]

Quitar espacios de inncesarios

04-Feb-2021 00:15
Invitado (Jesus)
5 Respuestas

Hola. He estado intentando que a una cadena de caracteres se le quite los espacios que el usuario añadió extra, pero he estado horas intentandolo y no logro hacerlo.

Por ejemplo, si tengo la cadena " esta       es      una  cadena" me la ordene solo con un solo espacio entre palabras: "esta es una cadena".

Alguna idea de cómo podría hacerlo?

Muchas gracias.


04-Feb-2021 14:34
Nacho Cabanes (+83)

¿Qué has hecho hasta ahora?

Porque la respuesta depende, para empezar, de si usas cadenas al estilo C o si es con strings de C++


06-Feb-2021 01:25
Invitado (Jesus)

Uso strings de c++.

Lo que estuve desarrollando fue algo así.

string nombre;

Introduzco el nombre
string nuevoNombre;

for(int i=0; i<nombre.length(); i++){
   
     if(isspace(nombre[i]) && isspace(nombre[i+1])){
              nuevoNombre=nombre.substr(0,i)+nombre.substr(i+1, string::npos);

    }

}


Es decir, si el caracter actual es un espacio y el siguiente también va a recortar el espacio extra.
El problema es que me termina borrando cosas que no debería borrar


06-Feb-2021 17:15
Invitado (aniceto)

hola jesus

te paso un código en c++ con la librería string
y otro mas espartano en c sin la librería string.h

en líneas de código, el de c++ es más corto, pero
el ejecutable en c ocupa bastante menos y es más rápido

por si te sirve alguna idea para tu código:

  https://www.online-ide.com/W9huF6L1gn
  https://www.online-ide.com/9WhCT1EcJg

suerte ;-)


08-Feb-2021 02:57
Invitado (Jesus)

Hola aniceto.

Muchas gracias por tu ayuda.

Solo tengo una duda, ¿cómo se va incrementando la posición? Aún no soy tan experimentado. Gracias nuevamente


08-Feb-2021 20:26
Invitado (aniceto)

hola jesus

supongo que te refieres al de c++
no hay incremento, solo encuentro y reemplazo

en este enlace podrás encontrar todo lo que necesitas
https://es.cppreference.com/w/

mas concretamente de std::string::find
https://es.cppreference.com/w/cpp/string/basic_string/find

y de std::string::replace
https://es.cppreference.com/w/cpp/string/basic_string/replace

fíjate en las ejemplos del final de las páginas

saludos ;-)






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)