Input/output library
C++ inclut les bibliothèques d'entrée/sortie suivantes : une bibliothèque d'I/O orientée flux de style POO , famille de fonctions basée sur l'impression (depuis C++23) , et l'ensemble standard des fonctions d'I/O de style C .
Entrées/Sorties basées sur les flux
La bibliothèque d'entrée/sortie basée sur les flux est organisée autour de dispositifs d'entrée/sortie abstraits. Ces dispositifs abstraits permettent au même code de gérer l'entrée/sortie vers des fichiers, des flux mémoire, ou des dispositifs adaptateurs personnalisés qui effectuent des opérations arbitraires (par exemple, la compression) à la volée.
La plupart des classes sont basées sur des templates, ce qui permet de les adapter à tout type de caractère de base. Des typedefs distincts sont fournis pour les types de caractères de base les plus courants ( char et wchar_t ). Les classes sont organisées selon la hiérarchie suivante :
Diagramme d'héritage
Abstraction |
|
|
Défini dans l'en-tête
<ios>
|
|
|
gère les indicateurs de formatage et les exceptions d'entrée/sortie
(classe) |
|
|
gère un tampon de flux arbitraire
(modèle de classe) |
|
|
Défini dans l'en-tête
<streambuf>
|
|
|
abstrait un périphérique brut
(modèle de classe) |
|
|
Défini dans l'en-tête
<ostream>
|
|
|
encapsule un dispositif abstrait donné (
std::basic_streambuf
)
et fournit une interface de sortie de haut niveau (modèle de classe) |
|
|
Défini dans l'en-tête
<istream>
|
|
|
encapsule un dispositif abstrait donné (
std::basic_streambuf
)
et fournit une interface d'entrée de haut niveau (modèle de classe) |
|
|
encapsule un dispositif abstrait donné (
std::basic_streambuf
)
et fournit une interface d'entrée/sortie de haut niveau (modèle de classe) |
|
Implémentation d'E/S de fichiers |
|
|
Défini dans l'en-tête
<fstream>
|
|
|
implémente un périphérique de fichier brut
(modèle de classe) |
|
|
implémente les opérations d'entrée de flux de fichier de haut niveau
(modèle de classe) |
|
|
implémente les opérations de sortie de flux de fichiers de haut niveau
(modèle de classe) |
|
|
implémente les opérations d'entrée/sortie de flux de fichiers de haut niveau
(modèle de classe) |
|
Implémentation des E/S de chaînes |
|
|
Défini dans l'en-tête
<sstream>
|
|
|
implémente un périphérique de chaîne brut
(modèle de classe) |
|
|
implémente les opérations d'entrée de flux de chaîne de haut niveau
(modèle de classe) |
|
|
implémente les opérations de sortie de flux de chaîne de haut niveau
(modèle de classe) |
|
|
implémente les opérations d'entrée/sortie de flux de chaîne de haut niveau
(modèle de classe) |
|
Implémentations d'E/S de tableaux |
|
|
Défini dans l'en-tête
<spanstream>
|
|
|
(C++23)
|
implémente un périphérique de tampon de caractères brut fixe
(modèle de classe) |
|
(C++23)
|
implémente les opérations d'entrée sur tampon de caractères fixe
(modèle de classe) |
|
(C++23)
|
implémente les opérations de sortie sur tampon de caractères fixe
(modèle de classe) |
|
(C++23)
|
implémente les opérations d'entrée/sortie sur tampon de caractères fixe
(modèle de classe) |
|
Défini dans l'en-tête
<strstream>
|
|
|
(déprécié en C++98)
(supprimé en C++26)
|
implémente un périphérique de tableau de caractères brut
(classe) |
|
(obsolète en C++98)
(supprimé en C++26)
|
implémente les opérations d'entrée sur des tableaux de caractères
(classe) |
|
(obsolète en C++98)
(supprimé en C++26)
|
implémente les opérations de sortie sur des tableaux de caractères
(classe) |
|
(obsolète en C++98)
(supprimé en C++26)
|
implémente les opérations d'entrée/sortie sur des tableaux de caractères
(classe) |
Sortie synchronisée (depuis C++20) |
|
|
Défini dans l'en-tête
<syncstream>
|
|
|
(C++20)
|
wrapper de périphérique de sortie synchronisé
(modèle de classe) |
|
(C++20)
|
wrapper de flux de sortie synchronisé
(modèle de classe) |
Typedefs
Les typedefs suivants pour les types de caractères courants sont fournis dans l'espace de noms
std
:
Objets de flux standard prédéfinis
|
Défini dans l'en-tête
<iostream>
|
|
|
lit depuis le flux d'entrée standard C
stdin
(objet global) |
|
|
écrit vers le flux de sortie standard C
stdout
(objet global) |
|
|
écrit vers le flux d'erreur standard C
stderr
, non tamponné
(objet global) |
|
|
écrit vers le flux d'erreur standard C
stderr
(objet global) |
|
Manipulateurs d'E/S
La bibliothèque d'E/S basée sur les flux utilise les manipulateurs d'E/S (par exemple std::boolalpha , std::hex , etc.) pour contrôler le comportement des flux.
Types
Les types auxiliaires suivants sont définis :
|
Défini dans l'en-tête
<ios>
|
|
|
représente la position relative d'un fichier/flux (décalage depuis fpos), suffisant pour représenter n'importe quelle taille de fichier
(typedef) |
|
|
représente le nombre de caractères transférés dans une opération d'E/S ou la taille d'un tampon d'E/S
(typedef) |
|
|
représente la position absolue dans un flux ou un fichier
(modèle de classe) |
|
Les noms typedef suivants pour std:: fpos < std:: mbstate_t > sont fournis :
|
Défini dans l'en-tête
<iosfwd>
|
|
| Type | Définition |
std::streampos
|
std:: fpos < std:: char_traits < char > :: state_type > |
std::wstreampos
|
std:: fpos < std:: char_traits < wchar_t > :: state_type > |
std::u8streampos
(C++20)
|
std:: fpos < std:: char_traits < char8_t > :: state_type > |
std::u16streampos
(C++11)
|
std:: fpos < std:: char_traits < char16_t > :: state_type > |
std::u32streampos
(C++11)
|
std:: fpos < std:: char_traits < char32_t > :: state_type > |
Interface de catégorie d'erreur (depuis C++11)
|
Défini dans l'en-tête
<ios>
|
|
|
(C++11)
|
les codes d'erreur des flux d'E/S
(enumération) |
|
(C++11)
|
identifie la catégorie d'erreur des iostream
(fonction) |
Fonctions d'impression (depuis C++23)
Les fonctions de la famille print prenant en charge Unicode qui effectuent des E/S formatées sur du texte déjà formaté. Elles apportent tous les avantages de performance de std::format , sont indépendantes des locales par défaut, réduisent l'état global, évitent l'allocation d'un objet temporaire std::string et l'appel à operator << , et en général rendent le formatage plus efficace comparé aux iostreams et à stdio .
Les fonctions d'impression suivantes sont fournies :
|
Défini dans l'en-tête
<print>
|
|
|
(C++23)
|
imprime vers
stdout
ou un flux de fichier en utilisant la représentation
formatée
des arguments
(modèle de fonction) |
|
(C++23)
|
identique à
std::print
sauf que chaque impression est terminée par un saut de ligne supplémentaire
(modèle de fonction) |
|
imprime vers
stdout
compatible Unicode ou un flux de fichier en utilisant la représentation
type-erased
des arguments
(fonction) |
|
|
imprime vers
stdout
ou un flux de fichier en utilisant la représentation
type-erased
des arguments
(fonction) |
|
|
Défini dans l'en-tête
<ostream>
|
|
|
(C++23)
|
produit la représentation
formatée
des arguments
(modèle de fonction) |
|
(C++23)
|
produit la représentation
formatée
des arguments avec ajout de
'
\n
'
(modèle de fonction) |
Entrées/Sorties de style C
C++ inclut également les fonctions d'entrée/sortie définies par C , telles que std::fopen , std::getc , etc.
Voir aussi
| Bibliothèque de système de fichiers (depuis C++17) |