Leer cadenas tipo string con espacios

Iniciado por luisda2994, 24 Julio 2012, 06:24 AM

0 Miembros y 1 Visitante están viendo este tema.

luisda2994

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?

bemone

Odio los tipos de variable de Windows.

BlackZeroX

#2
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!¡.
The Dark Shadow is my passion.

rir3760

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.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

luisda2994

Muchas gracias, he solucionado mi problema.