Microsoft KB Archive/246934

From BetaArchive Wiki
Knowledge Base

Article ID: 246934

Article Last Modified on 7/30/2001

This article was previously published under Q246934


The istream::readsome function does not read correct data from a file.


The basic_istream::readsome function has some limitations when used on certain streams. Moreover, the MSDN documentation for basic_istream::readsome states that internally basic_istream::readsome calls the read function. However, in the basic_istream::readsome implementation, the read function is never called.


Give preference to basic_istream::read.


Microsoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article.


Here is a code sample that illustrates the problem and provides a workaround:

#include <iostream>
#include <fstream>

using namespace std;

int main()
    ifstream file("c:\\config.sys",ios::in|ios::binary);

    static char buffer[10];
    buffer[10] = 0;

    if ( !file )
        cout << "unable to open file" << endl;
        file.readsome(buffer,10); // It does not work properly.
        // buffer, 10 ); // Uncomment this line for work around.
        cout << buffer << endl;

        cout << endl << "File contents are:" << endl;
        file.seekg( 0 );    // Rewind file.
        while( file.good() )
            file.getline( buffer, 10 );
            cout << buffer << endl;
    return 0;


Additional query words: stl

Keywords: kbbug KB246934