Bibliothèque C ++ IOS - Setf

La description

Il est utilisé pour définir des indicateurs de format spécifiques. Les indicateurs de format d'un flux affectent la manière dont les données sont interprétées dans certaines fonctions d'entrée et comment elles sont écrites par certaines fonctions de sortie. Voir ios_base :: fmtflags pour les valeurs possibles des arguments de cette fonction.

Déclaration

Voici la déclaration de la fonction ios_base :: setf.

set (1)	fmtflags setf (fmtflags fmtfl);
mask (2) fmtflags setf (fmtflags fmtfl, fmtflags mask);

Le premier formulaire (1) définit les drapeaux de format du flux dont les bits sont définis dans fmtfl, laissant le reste inchangé, comme si un appel à des drapeaux (fmtfl | flags ()).

La deuxième forme (2) définit les indicateurs de format du flux dont les bits sont définis à la fois dans fmtfl et mask, et efface les indicateurs de format dont les bits sont définis dans mask mais pas dans fmtfl, comme si un appel à flags ((fmtfl & mask) | (flags () & ~ masque)).

Paramètres

fmtfl- Format des drapeaux à définir. Si la seconde syntaxe est utilisée, seuls les bits définis à la fois dans fmtfl et mask sont définis dans les indicateurs de format du flux; les drapeaux définis dans mask mais pas dans fmtfl sont effacés.

mask - Masque contenant les drapeaux à modifier.

Valeur de retour

Les indicateurs de format sélectionnés dans le flux avant l'appel.

Des exceptions

Basic guarantee - si une exception est levée, le flux est dans un état valide.

Courses de données

Modifie l'objet de flux. L'accès simultané au même objet de flux peut provoquer des courses de données.

Exemple

L'exemple ci-dessous explique la fonction ios_base :: setf.

#include <iostream>     

int main () {
   std::cout.setf ( std::ios::hex, std::ios::basefield );  
   std::cout.setf ( std::ios::showbase );                  
   std::cout << 100 << '\n';
   std::cout.unsetf ( std::ios::showbase );                
   std::cout << 100 << '\n';
   return 0;
}

Compilons et exécutons le programme ci-dessus, cela produira le résultat suivant -

0x64
64