Pregunta

en VC ++ entorno Im usando (cadena) la función getline para leer líneas separadas en archivo abierto. El problema es que getline necesita carácter 1Ah como el final del archivo y si está presente en la línea, extremos leer todo antes de tiempo. ¿Hay alguna solución para esto?

Fragmento de código:

fstream LogFile (Source,fstream::in);
string Line

while (getline(LogFile,Line))
{  ....  }

Contenido del archivo:

line1text1asdf
line2text2asd //EOF for getline here
line3asdas // this line will never be read by getline

Gracias por cualquier información.

Kra

¿Fue útil?

Solución

Reemplazar getline con una función de enrollado a mano que lee en carácter a carácter hasta el final de la línea o EOF, según lo definido por usted.

Otros consejos

Sí, Ctrl + Z fue el carácter EOF archivo para archivos de texto en sistemas operativos antiguos. Es un carácter de control que realmente no debería estar presente en un archivo de texto, puede no significativa traducirlo. Openmode :: binaria es todo lo que puede hacer si lo que se requiere.

Por lo general prefieren para abrir el archivo en formato binario, leer los datos con la función de abajo, y extrae los '\ n' y '\ r' para detectar final de las líneas.

UINT xread(HFILE hfile, void *buf, UINT size)
{
   UINT ret;


   #if defined(_WIN32)

   ret = _read(hfile, buf, size);

   #elif defined(_LINUX) || defined(__APPLE__)

   ret = read(hfile, buf, size);

   #endif


   return(ret);
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top