Maison >développement back-end >C++ >Pourquoi certains manipulateurs C iomanip sont-ils collants alors que d'autres, comme `std::setw()`, ne le sont pas ?

Pourquoi certains manipulateurs C iomanip sont-ils collants alors que d'autres, comme `std::setw()`, ne le sont pas ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-22 18:02:15874parcourir

Why Are Some C   iomanip Manipulators Sticky While Others, Like `std::setw()`, Are Not?

Manipulateurs Sticky Iomanip

En C, les manipulateurs iomanip sont des modificateurs de flux, utilisés pour modifier le comportement ou le format des flux d'entrée et de sortie. Cependant, tous les manipulateurs ne se comportent pas de la même manière ; certains sont temporaires et n'affectent que la prochaine insertion, tandis que d'autres sont « collants », restant en vigueur jusqu'à ce qu'ils soient explicitement modifiés.

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

Contrairement à la plupart des autres manipulateurs, std::setw() ne modifie pas l'état du flux de manière permanente. En effet, il est considéré comme un manipulateur de formatage, dans lequel chaque insertion nécessite une spécification explicite de largeur pour un alignement correct. Par défaut, il se réinitialise à zéro après chaque insertion pour éviter toute ambiguïté et garder le contrôle du formatage.

Manipulateurs collants

Les manipulateurs suivants sont collants, ce qui signifie qu'ils restent en vigueur jusqu'à ce qu'il soit modifié par un autre manipulateur ou explicitement réinitialiser :

  • std::setiosflags
  • std::resetiosflags
  • std::setbase
  • std::setfill
  • std::setprecision
  • Tous les manipulateurs de modification de drapeau (par exemple, std::boolalpha, std::showbase)
  • Tous les manipulateurs de formatage (par exemple, std::fixed, std::internal)
  • Tous les modificateurs d'état de flux (par exemple, std: :ws, std::endl)

std::ios_base::width() contre std::setw()

std::ios_base::width () est une fonction membre de std::ios_base, la classe de base de tous les types de flux. Il renvoie la largeur actuelle du champ. Cependant, il ne contrôle pas directement la largeur du champ ; std::setw() doit être utilisé pour définir la largeur du champ.

Référence en ligne

Reportez-vous à la documentation de la bibliothèque standard C pour une liste complète des manipulateurs iomanip et leur comportement. Il fournit des descriptions détaillées et des exemples de leurs fonctionnalités. Alternativement, des ressources en ligne comme le site Web cppreference offrent des informations détaillées sur les manipulateurs, y compris leur nature collante.

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!

Déclaration:
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