Maison > développement back-end > C++ > Quels manipulateurs de flux C sont collants et pourquoi « setw() » ne l'est-il pas ?

Quels manipulateurs de flux C sont collants et pourquoi « setw() » ne l'est-il pas ?

Linda Hamilton
Libérer: 2024-12-13 04:37:09
original
949 Les gens l'ont consulté

Which C   Stream Manipulators are Sticky, and Why Isn't `setw()`?

Manipulateurs Sticky en C

En programmation C, les manipulateurs sont utilisés pour modifier le formatage de sortie des flux. Certains manipulateurs se comportent de manière « collante », ce qui signifie que leurs effets persistent jusqu'à ce qu'ils soient explicitement modifiés.

Pourquoi setw() n'est-il pas collant ?

std::setw( ) est un exemple de manipulateur non collant. Cela signifie que cela n’affecte que la prochaine opération d’insertion. Une fois setw() utilisé, le paramètre de largeur est réinitialisé à sa valeur par défaut.

D'autres manipulateurs sont-ils collants ?

Tous les manipulateurs, à l'exception de setw(), sont collants. Ce comprend :

  • setiosflags
  • resetiosflags
  • setbase
  • setfill
  • setprecision
  • setiosflags
  • resetiosflags
  • setbase
  • setfil l
  • setprecision
  • [no]boolalpha
  • [no]showbase
  • [no]showpoint
  • [no]showpos
  • [no]skipws
  • [no]unitbuf
  • [no]uppercase
  • dec/ hex/ oct
  • fixe/ scientifique
  • interne/gauche/droite
  • ws/ endl/ends/flush

Différence entre std::ios_base::width() et std::setw()

std::setw() renvoie un objet qui représente une valeur de largeur. Cet objet peut être utilisé pour définir la largeur du prochain élément inséré dans un flux.

std::ios_base::width() définit directement la largeur du flux. Toutes les insertions ultérieures dans le flux seront formatées avec la nouvelle largeur.

Référence en ligne

Malheureusement, il n'existe aucune documentation claire qui indique explicitement le comportement collant des manipulateurs. Cependant, le comportement peut être déduit de la documentation de la bibliothèque standard C.

Exemple de manipulateurs collants

Le code suivant démontre le comportement collant des manipulateurs :

#include <iostream>
#include <iomanip>

using namespace std;

int main() {
  // Set the precision to 2 decimal places
  cout << setprecision(2);

  // Insert a number
  cout << 3.14 << endl;  // Output: 3.14

  // The precision is still set to 2 decimal places
  cout << 1.2345 << endl; // Output: 1.23
}
Copier après la connexion

Conclusion

Les manipulateurs collants sont un fonctionnalité utile en C qui peut aider à contrôler le formatage de la sortie. Cependant, il est important d'être conscient de leur comportement pour éviter des résultats inattendus.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal