[ Foro de C++ ]
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.
¿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++
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
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 ;-)
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
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.)