Maison >développement back-end >C++ >Comment puis-je formater la sortie avec des zéros non significatifs en C ?

Comment puis-je formater la sortie avec des zéros non significatifs en C ?

DDD
DDDoriginal
2024-12-04 21:44:15882parcourir

How Can I Format Output with Leading Zeros in C  ?

Formater la sortie avec des zéros non significatifs en C

En C, le formatage de la sortie est crucial pour afficher les données d'une manière spécifique. Un scénario courant consiste à imprimer des zéros non significatifs, de la même manière que printf le gère avec d. Bien que l'utilisation de printf soit une option, vous préférerez peut-être l'opérateur de sortie de flux C (<<).

Une option pour obtenir des zéros non significatifs consiste à concaténer une chaîne formatée à l'aide de sprintf avec votre opérateur de sortie, comme indiqué ci-dessous. :

std::cout << "ZIP code: " << sprintf("%05d", zipCode) << std::endl;

Cependant, il existe une solution plus propre utilisant IO manipulateurs :

#include <iomanip>

using namespace std;

cout << setw(5) << setfill('0') << zipCode << endl;

// or without 'using namespace std;'
std::cout << std::setw(5) << std::setfill('0') << zipCode << std::endl;</p>
<p>setw(width) définit la largeur du champ, tandis que setfill(char) spécifie le caractère utilisé pour remplir l'espace restant. Dans ce cas, « 0 » est utilisé pour ajouter des zéros non significatifs.</p>
<p>Notez que ces manipulateurs affectent l'état global de l'objet cout. Pour éviter des effets inattendus lors d'utilisations ultérieures, vous devez les annuler en réinitialisant les indicateurs.</p>
<p>Si vous préférez un formatage concis, pensez à utiliser la bibliothèque fmt :</p>
<pre class="brush:php;toolbar:false">cout << fmt::format("{:05d}", zipCode);

C 20 et versions ultérieures ont construit -dans la prise en charge de std::format, et C 23 introduit std::print, offrant des options encore plus pratiques pour le formatage sortie.

Pour les nombres non négatifs comme les codes postaux, le code ci-dessus suffira. Cependant, si vous devez gérer des nombres négatifs, ajoutez std::internal pour placer le caractère de remplissage entre le signe et la grandeur :

cout << internal << setw(5) << setfill('0') << zipCode << endl;

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