Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: luisda2994 en 24 Julio 2012, 06:24 AM

Título: Leer cadenas tipo string con espacios
Publicado por: luisda2994 en 24 Julio 2012, 06:24 AM
He leido varios post sobre como leer una cadenas con espacio donde recomiendan usar fgets() o getline() en vez de cin.
Aquello funciona cuando la variable es declarada char[], pero yo tengo mis variables string... que me recomiendan?
Título: Re: Leer cadenas tipo string con espacios
Publicado por: bemone en 24 Julio 2012, 09:19 AM
getline(cin, string);
Título: Re: Leer cadenas tipo string con espacios
Publicado por: BlackZeroX en 24 Julio 2012, 13:52 PM
e c++

getline() tambien sierve para string (es mas recomendable usar string que char en esta funcion)...

en c-ansi



#include <stdio.h>
#include <stdlib.h>

char *readLine(FILE *file) {
   char *line = (char*)malloc(1);
   size_t size = 0;

   while ((line[size] = getchar()) != '\n')
       line = (char*)realloc(line, ++size + 1);

   line[size] = '\0';

   return line;
}

int main() {     // ==============
   char cmd[512];
   char *path; //  MAX_PATH = 256

   puts("Ruta a crear");
   path = readLine(stdin); //  leemos una linea desde el buffer de entrada del teclado
   sprintf(cmd, "mkdir \"%s\"", path); //  construimos la cadena por ejemplo: mkdir "c:\Hola Mundo desde C-ANSI"
   system(cmd);    //  Ejecutamos.

   free(path);
   getchar();
   return EXIT_SUCCESS;
}



Dulces Lunas!¡.
Título: Re: Leer cadenas tipo string con espacios
Publicado por: rir3760 en 24 Julio 2012, 15:04 PM
Solo para redondear el aporte de bemone.

Si no tienes una referencia de calidad sobre la biblioteca estándar de C++ puedes utilizar una en linea. Solo por mencionar una (por cierto muy buena): descripción y ejemplo (en ingles) de la funcion "getline" cortesia del sitio C plus plus se encuentra en esta pagina (http://www.cplusplus.com/reference/string/getline/).

Un saludo
Título: Re: Leer cadenas tipo string con espacios
Publicado por: luisda2994 en 24 Julio 2012, 19:55 PM
Muchas gracias, he solucionado mi problema.