Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problemas usando getline() con archivos (fstream)?

Estas en el tema de Problemas usando getline() con archivos (fstream)? en el foro de C/C++ en Foros del Web. Buenas jeje tengo una consulta... es decir en mi proyecto debo hacer un juego estilo preguntados... y debo guardar cada objeto en un txt usando ...
  #1 (permalink)  
Antiguo 29/01/2016, 03:10
 
Fecha de Ingreso: enero-2016
Mensajes: 1
Antigüedad: 8 años, 9 meses
Puntos: 0
Pregunta Problemas usando getline() con archivos (fstream)?

Buenas jeje tengo una consulta... es decir en mi proyecto debo hacer un juego estilo preguntados... y debo guardar cada objeto en un txt usando la libreria fstream... la cuestion es que necesito guardar una linea de caracteres y lo estoy haciendo asi... donde io tiene 2 atributos:
ifstream in;
ofstream out;

el metodo recibe un objeto de tipo respuesta (la clase respuesta tiene un string que seria la descripcion de la respuesta o nombre y un bool para identificar cual respuesta es correcta.
uso un * de bandera para que a la hora de leer el string se detenga al leer el * y guarde todo lo leido hasta antes de llegar ahi
void IO::WR(Respuesta*p)
{
string nomb;
out.open("RESP.txt");
getline( cin,nomb,'\n');
out << nomb <<'*'<<" "<<p->getEsCorrecta()<< endl;
out.close();
}

ya guardado me quedaria algo asi en el doc .txt
Los Andes* 0

pero el problema es que no puedo usar el getline para obtener la cadena de strings debido que al usar

in>>getline(cin,nombre,'*')>>esCorrecta (para el booleano);

tambien he intententado

getline (in,nombre,'n');

o solo usando

getline (in, nombre);


pero no me funciona y no se como hacerlo pq intente hacerlo asi

getline(in>>nombre,'n');


realmente no se como hacer para sacar el archivo usando el ifstream

Si hay alguna otra forma con la que se pueda obtener esa cadena de caracteres me seria de gran utilidad
no tanto por la pereza de no querer hacerlo con getline sino tambien para aprender nuevas tecnicas y usos
  #2 (permalink)  
Antiguo 29/01/2016, 08:23
Avatar de xKuZz  
Fecha de Ingreso: febrero-2015
Ubicación: nullptr
Mensajes: 183
Antigüedad: 9 años, 9 meses
Puntos: 27
Respuesta: Problemas usando getline() con archivos (fstream)?

Para próximas dudas utiliza la etiqueta Highligth apropiada de C++ para resaltar el código.

Para leer una cadena hasta el carácter '*' en un string la manera apropiada es

Código C++:
Ver original
  1. getline(in,nombre,*);

Fíjate en que no se pone el in >> antes de llamar a getline. No obstante veo que intentas incluir todo en la misma línea y haces lo siguiente:

Código C++:
Ver original
  1. in >> getline(cin,nombre,'*') >> esCorrecta;

La base está en que las operaciones realizadas tanto por el operador >> como funciones tipo getline devuelve una referencia al flujo modificado de tal manera que podemos escribir la típica sintáxis cin >> undato >> otrodato >> otradato;

En este caso como getline de por sí es una función el primer in >> sobra, y el primer parámetro que se la pasa d¡a dicho getline es el flujo del que queremos obtener el dato que no es cin sino in.

Haciendo esos ligeros cambios obtienes una línea de código que realmente hace lo que quieres:

Código C++:
Ver original
  1. getline(in,nombre,'*') >> esCorrecta;

No obstante si el hecho de ponerlos en una única linea te resulta incómodo, esa linea es equivalente a:
Código C++:
Ver original
  1. getline(in,nombre,'*');
  2. in >> esCorrecta;

Etiquetas: c++, getline
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:13.