Saltar al contenido

¿Copiar datos de fstream a stringstream sin búfer?

Contamos con tu apoyo para compartir nuestras secciones con relación a las ciencias informáticas.

Solución:

 ifstream f(fName);
 stringstream s;
 if (f) 
     s << f.rdbuf();    
     f.close();
 

// need to include  and , and of course  and 
ifstream fin("input.txt");
ostringstream sout;
copy(istreambuf_iterator(fin),
     istreambuf_iterator(),
     ostreambuf_iterator(sout));

En la documentación para ostreamhay varias sobrecargas para operator<<. Uno de ellos toma un streambuf* y lee todo el contenido de streambuffer.

Aquí hay un ejemplo de uso (compilado y probado):

#include 
#include 
#include 
#include 

int main ( int, char ** )
try

        // Will hold file contents.
    std::stringstream contents;

        // Open the file for the shortest time possible.
     std::ifstream file("/path/to/file", std::ios::binary);

            // Make sure we have something to read.
        if ( !file.is_open() ) 
            throw (std::exception("Could not open file."));
        

            // Copy contents "as efficiently as possible".
        contents << file.rdbuf();
    

        // Do something "useful" with the file contents.
    std::cout << contents.rdbuf();

catch ( const std::exception& error )

    std::cerr << error.what() << std::endl;
    return (EXIT_FAILURE);

Aquí tienes las comentarios y valoraciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *