##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# std::basic_istream::read

From cppreference.com
< cpp‎ | io‎ | basic istream

basic_istream& read( char_type* s, std::streamsize count ); |  |

Extracts characters from stream.

Behaves as `UnformattedInputFunction`. After constructing and checking the sentry object, extracts characters and stores them into successive locations of the character array whose first element is pointed to by `s`. Characters are extracted and stored until any of the following conditions occurs:

- `count` characters were extracted and stored

- end of file condition occurs on the input sequence (in which case, setstate(failbit|eofbit) is called. The number of successfully extracted characters can be queried using gcount().

### [edit] Parameters

s | - | pointer to the character array to store the characters to
count | - | number of characters to read

### [edit] Return value

*this

### [edit] Exceptions

[edit]
failure 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] Example

Run this code

    #include <iostream>
    #include <fstream>
    #include <sstream>
    #include <string>
    #include <cstdint>

    int main()
    {
        // read() is often used for binary I/O
        std::string bin = {'\x12', '\x12', '\x12', '\x12'};
        std::istringstream raw(bin);
        std::uint32_t n;
        raw.read(reinterpret_cast<char*>(&n), sizeof n);
        std::cout << std::hex << std::showbase << n << '\n';

        // prepare file for next snippet
        std::ofstream os("test.txt", std::ofstream::binary);
        for (unsigned i = 0; i < 10; i++) { // prepare stream
            os << "abcd" << i << "\n";
        }
        os.close();

        // read entire file into string
        std::ifstream is("test.txt", std::ifstream::binary);
        if (is) {
            // get length of file:
            is.seekg(0, is.end);
            int length = is.tellg();
            is.seekg(0, is.beg);

            std::string str;
            str.resize(length, ' '); // reserve space
            char* begin = &*str.begin();

            is.read(begin, length);
            is.close();

            std::cout << str << "\n";
        } else {
            std::cout << "Could not open test.txt\n";
        }
    }

Output:

    0x12121212
    abcd0
    abcd1
    abcd2
    abcd3
    abcd4
    abcd5
    abcd6
    abcd7
    abcd8
    abcd9

### [edit] See also

write | inserts blocks of characters (public member function of `std::basic_ostream`) [edit]
operator>> | extracts formatted data (public member function) [edit]
readsome | extracts already available blocks of characters (public member function) [edit]
get | extracts characters (public member function) [edit]
getline | extracts characters until the given character is found (public member function) [edit]
fread | reads from a file (function) [edit]

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/io/basic_istream/read&oldid=65947"