Foro de elhacker.net

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

Código
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. char *readLine(FILE *file) {
  6.    char *line = (char*)malloc(1);
  7.    size_t size = 0;
  8.  
  9.    while ((line[size] = getchar()) != '\n')
  10.        line = (char*)realloc(line, ++size + 1);
  11.  
  12.    line[size] = '\0';
  13.  
  14.    return line;
  15. }
  16.  
  17. int main() {     // ==============
  18.    char cmd[512];
  19.    char *path; //  MAX_PATH = 256
  20.  
  21.    puts("Ruta a crear");
  22.    path = readLine(stdin); //  leemos una linea desde el buffer de entrada del teclado
  23.    sprintf(cmd, "mkdir \"%s\"", path); //  construimos la cadena por ejemplo: mkdir "c:\Hola Mundo desde C-ANSI"
  24.    system(cmd);    //  Ejecutamos.
  25.  
  26.    free(path);
  27.    getchar();
  28.    return EXIT_SUCCESS;
  29. }
  30.  
  31.  

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.