Copy data from fstream to stringstream with no buffer?

后端 未结 5 1403
爱一瞬间的悲伤
爱一瞬间的悲伤 2021-02-01 19:02

Is there anyway I can transfer data from an fstream (a file) to a stringstream (a stream in the memory)?

Currently, I\'m using a buffer, but th

5条回答
  •  自闭症患者
    2021-02-01 19:14

    In the documentation for ostream, there are several overloads for operator<<. One of them takes a streambuf* and reads all of the streambuffer's contents.

    Here is a sample use (compiled and tested):

    #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);
    }
    

提交回复
热议问题