std::basic_istream<CharT,Traits>:: read
|
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
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) |