Façon intelligente de mise en forme des tableaux sur la sortie standard stdout dans C
Je suis en train d'écrire la table de sortie standard (stdout) avec des données numériques. Je voudrais format, de sorte que les nombres sont alignés comme:
1234 23
312 2314
12 123
Je sais que la longueur maximale du numéro de 6 caractères, est-il une façon intelligente pour savoir combien d'espaces doit être sortie avant nombre de sorte qu'il ressemble à ça?
Regardez
est-il possible sans l'aide de <iomanip>? Je sais que cela semble étrange, mais je voudrais rendre mon code plus portable possible
Tout droit, vous avez à me convaincre 🙂 merci à vous
std::setw
et std::setfill
dans <iomanip>
.est-il possible sans l'aide de <iomanip>? Je sais que cela semble étrange, mais je voudrais rendre mon code plus portable possible
iomanip
est un en-tête qui vient avec le standard C++ library -- vous ne pouvez pas trouver quelque chose de plus portable...Tout droit, vous avez à me convaincre 🙂 merci à vous
OriginalL'auteur Blackie123 | 2011-12-18
Vous devez vous connecter pour publier un commentaire.
printf
peut être la solution la plus rapide:Imprime:
Quelque chose de similaire peut être obtenue avec un long et détaillé de la séquence de iostream commandes; quelqu'un d'autre va sûrement poster une réponse si vous préférez le "C++ pur" goût de la.
Mise à jour: en Fait, la iostreams version n'est pas beaucoup plus terrible. (Tant que vous ne voulez pas scientifique flotteur de mise en forme ou hex de sortie, ce qui est.) Ici, il va:
Plus de gens sont familiers avec
%d
qu'avec%i
.J'ai ajouté le iostreams/iomanip version pour faire bonne mesure. Il n'est en fait pas trop mauvais.
ou tout simplement faire un
std::ostream format_cout(std::cout.rdbuf());
et définir les indicateurs sur les flux séparé pour éviter le gâchisou utiliser ostringstream pour la mise en forme, et puis il suffit de passer la chaîne à cout
OriginalL'auteur Kerrek SB
Pour c, utiliser "%6d" pour spécifier l'impression, c'est à dire
Pour le c++,
N'oubliez pas de
#include <iomanip>
.Utilisation de cout est fortement recommandé plus de printf pour le type des raisons de sécurité.
Si je me souviens bien, Boost est un type sûr de remplacement pour printf, de sorte que vous pouvez utiliser
qu'au lieu de vous avez besoin de la chaîne de formatage, args forme.
setw
besoin d'être appelée avant tous opération?OriginalL'auteur moshbear
Pour le fun:
de sortie:
OriginalL'auteur sehe