A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://en.cppreference.com/w/cpp/language/../io/basic_stringbuf/../basic_istream/readsome.html below:

std::basic_istream<CharT,Traits>::readsome - cppreference.com

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

Behaves as UnformattedInputFunction. After constructing and checking the sentry object,

[edit] Parameters s - pointer to the character array to store the characters to count - maximum number of characters to read [edit] Return value

The number of characters actually extracted.

[edit] Exceptionsfailure

if an error occurred (the error state flag is not

goodbit

) and

exceptions()

is set to throw for that state.

If an internal operation throws an exception, it is caught and badbit is set. If exceptions() is set for badbit, the exception is rethrown.

[edit] 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.

[edit] 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';
}

Output:

[edit] See also extracts blocks of characters
(public member function) [edit] obtains the number of characters immediately available in the get area
(public member function of std::basic_streambuf<CharT,Traits>) [edit]

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4