std::basic_istream<CharT,Traits>::readsome

Extracts up to count immediately available characters from the input stream. The extracted characters are stored into the character array pointed to by s.

# Declarations

std::streamsize readsome( char_type* s, std::streamsize count );

# Parameters

# Return value

The number of characters actually extracted.

# Notes

The behavior of this function is highly implementation-specific. For example, using readsome() with std::ifstream leads to significant, implementation-specific outcomes. Some library implementations fill the underlying filebuf with data as soon as std::ifstream opens a file, which means readsome() always reads data and could even read the entire file. With other implementations, std::ifstream only reads from a file when an input operation is invoked, which means calling readsome() immediately after opening the file never extracts any characters. Similarly, calling std::cin.readsome() may return all pending, unprocessed console input or may always return zero and extract no characters.

# Example

#include <cassert>
#include <iostream>
#include <sstream>
 
int main()
{
    char c[10] = "*********"; // c[9] == '\0'
 
    // std::stringbuf makes its entire buffer available for unblocking read
    std::istringstream input("This is sample text.");
 
    auto r = input.readsome(c, 5); // reads 'This ' and stores in c[0] .. c[4]
    assert(r == 5);
    std::cout << c << '\n';
 
    r = input.readsome(c, 9); // reads 'is sample' and stores in c[0] .. c[8]
    assert(r == 9);
    std::cout << c << '\n';
}

# See also