2012-04-22 16 views
7

En C++, ¿hay alguna función en la biblioteca fstream (o cualquier biblioteca) que me permita leer una línea en un delimitador de '\ n' sin extraer?C++ función fstream que lee una línea sin extraer?

Sé que la función peek() permite que el programa 'eche un vistazo' al siguiente carácter que está leyendo sin extraer, pero necesito una función peek() que lo haga pero para toda una línea.

+0

¿Cuál es su caso de uso para esto? Suena un poco como un problema XY. –

+0

es para leer un archivo de texto y desde él quiero usar una función como peek() para determinar si el siguiente valor de lectura es una cadena o no. el método a continuación funcionó perfectamente para mi problema. – SexyBeastFarEast

Respuesta

11

Puede hacerlo con una combinación de getline, tellg y seekg.

#include <fstream> 
#include <iostream> 
#include <ios> 


int main() { 
    std::fstream fs(__FILE__); 
    std::string line; 

    // Get current position 
    int len = fs.tellg(); 

    // Read line 
    getline(fs, line); 

    // Print first line in file 
    std::cout << "First line: " << line << std::endl; 

    // Return to position before "Read line". 
    fs.seekg(len ,std::ios_base::beg); 

    // Print whole file 
    while (getline(fs ,line)) std::cout << line << std::endl; 
} 
+0

Gracias Kleist este método funciona a la perfección! Entonces, ¿supongo que no hay una función como peek() que lea una línea? – SexyBeastFarEast

+0

Es cierto que no hay tal función de peek. – Kleist

Cuestiones relacionadas