Le formatage de C++ sortie de la console
J'ai essayé de formater la sortie de la console pour plus de temps et rien ne se passe vraiment. J'ai essayé d'utiliser autant de iomanip
comme je peux, et la ofstream&
fonctions.
void list::displayByName(ostream& out) const
{
node *current_node = headByName;
//I have these outside the loop so I don't write it every time.
out << "Name\t\t" << "\tLocation" << "\tRating " << "Acre" << endl;
out << "----\t\t" << "\t--------" << "\t------ " << "----" << endl;
while (current_node)
{
out << current_node->item.getName() //Equivalent tabs don't work?
<< current_node->item.getLocation()
<< current_node->item.getAcres()
<< current_node->item.getRating()
<< endl;
current_node = current_node->nextByName;
}
//The equivalent tabs do not work because I am writing names,
//each of different length to the console. That explains why they
//are not all evenly spaced apart.
}
Est leur tout ce que je peux utiliser pour obtenir tous bien alignés les uns avec les autres?
Les fonctions que je vais appeler " sont explicites et tous de longueurs différentes, de sorte que ne s'alignent pas très bien les uns avec les autres.
J'ai essayé à peu près tout le iomanip
.
OriginalL'auteur user40120 | 2009-09-19
Vous devez vous connecter pour publier un commentaire.
Vous pouvez écrire une procédure qui s'impriment toujours le même nombre de caractères sur la sortie standard.
Quelque chose comme:
Et ensuite l'utiliser dans votre programme:
OriginalL'auteur Vargas
Pensez-y comme à l'aide de Microsoft Excel 🙂
Vous pensez à votre flux en tant que champs. Si vous définissez la largeur du champ en premier, puis vous insérez votre texte dans ce champ. Par exemple:
......
......
La largeur de champ ne signifie rien, mais la largeur de la
text + spaces
. Vous pourriezfill
rien d'autre que des espaces:.....
......
Je pense que la meilleure façon est de comprendre votre format puis, écrire un nouveau formateur qui fait tout ce que vous voulez:
Si vous avez commencé à penser à paramétrées, les manipulateurs, les seuls qui acceptent un
int
oulong
paramètre sont faciles à mettre en œuvre, d'autres types sont vraiment obscure si vous n'êtes pas familier avec le cours d'eau dansC++
.Et vous pouvez aussi limiter la taille de la chaîne à être imprimé, juste au cas où vous avez de grandes chaînes de caractères (tels que les noms complets)
OriginalL'auteur AraK
Boost a un format de bibliothèque qui vous permet de formater facilement ourput comme les vieux C printf (), mais avec la sécurité de type de C++.
Rappelez-vous que les vieux C printf() vous a permis de spécifier une largeur de champ. Cet espace occupe le champ si la sortie est trop petit (veuillez noter qu'il n'a pas à faire face avec plus de la taille des champs).
OriginalL'auteur Martin York
Abandonner sur les onglets. Vous devriez être en mesure d'utiliser io manipulateurs pour définir la largeur de champ, le caractère de remplissage, et l'indicateur de format (pour obtenir de gauche ou de droite justification). Utiliser les mêmes valeurs pour les positions que vous faites pour les données, et tout devrait bien.
Aussi méfiez-vous que vous avez mis de Notation et des Acres dans votre exemple.
OriginalL'auteur Adrian McCarthy