Namespaces
Variants

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

From cppreference.net
basic_istream & read ( char_type * s, std:: streamsize count ) ;

Extrait des caractères du flux.

Se comporte comme une UnformattedInputFunction . Après avoir construit et vérifié l'objet sentinelle, extrait les caractères et les stocke dans des emplacements successifs du tableau de caractères dont le premier élément est pointé par s . Les caractères sont extraits et stockés jusqu'à ce que l'une des conditions suivantes se produise :

  • count caractères ont été extraits et stockés.
  • une condition de fin de fichier se produit sur la séquence d'entrée (auquel cas, setstate ( failbit | eofbit ) est appelée). Le nombre de caractères extraits avec succès peut être consulté en utilisant gcount() .

Table des matières

Paramètres

s - pointeur vers le tableau de caractères pour stocker les caractères
count - nombre de caractères à lire

Valeur de retour

* this

Exceptions

failure if an error occurred (the error state flag is not goodbit ) and exceptions() is set to throw for that state.

Si une opération interne lève une exception, elle est capturée et badbit est défini. Si exceptions() est défini pour badbit , l'exception est relancée.

Notes

Lors de l'utilisation d'une locale non convertissante (la locale par défaut est non convertissante), le redéfinition de cette fonction dans std::basic_ifstream peut être optimisée pour les entrées-sorties en bloc sans copie (au moyen de la redéfinition de std::streambuf::xsgetn ).

Exemple

#include <cstdint>
#include <fstream>
#include <iostream>
#include <sstream>
#include <string>
int main()
{
    // read() est souvent utilisé pour les E/S binaires
    std::string bin = {'\x12', '\x12', '\x12', '\x12'};
    std::istringstream raw(bin);
    std::uint32_t n;
    if (raw.read(reinterpret_cast<char*>(&n), sizeof n))
        std::cout << std::hex << std::showbase << n << '\n';
    // préparer le fichier pour l'extrait suivant
    std::ofstream("test.txt", std::ios::binary) << "abcd1\nabcd2\nabcd3";
    // lire le fichier entier dans une chaîne
    if (std::ifstream is{"test.txt", std::ios::binary | std::ios::ate})
    {
        auto size = is.tellg();
        std::string str(size, '\0'); // construire la chaîne à la taille du flux
        is.seekg(0);
        if (is.read(&str[0], size))
            std::cout << str << '\n';
    }
}

Sortie :

0x12121212
abcd1
abcd2
abcd3

Voir aussi

insère des blocs de caractères
(fonction membre publique de std::basic_ostream<CharT,Traits> )
extrait des données formatées
(fonction membre publique)
extrait les blocs de caractères déjà disponibles
(fonction membre publique)
extrait des caractères
(fonction membre publique)
extrait des caractères jusqu'à trouver le caractère donné
(fonction membre publique)
lit depuis un fichier
(fonction)