Au moment où vous émettez la première ligne,
Artist Title Price Genre Disc Sale Tax Cash
pour atteindre "l'alignement", vous devez savoir "à l'avance" quelle est la largeur de chaque colonne doivent être (dans le cas contraire, l'alignement est impossible). Une fois que vous faire connaitre les besoins de la largeur de chaque colonne (il y a plusieurs façons possibles de réaliser que selon l'endroit où vos données en provenance de), puis l' setw
fonction mentionné dans la réponse sera aider, ou, plus brutalement;-) vous pouvez émettre soigneusement calculé le nombre de places supplémentaires (maladroit, pour être sûr), etc. Je ne recommande pas les onglets de toute façon, tant que vous n'avez aucun contrôle réel sur la façon dont le périphérique de sortie final sera de rendre ceux-ci, en général.
Retour à la question centrale, si vous avez à chaque valeur de la colonne en vector<T>
de la sorte, par exemple, vous pouvez effectuer une première phase de mise en forme afin de déterminer la largeur maximale de la colonne, par exemple (assurez-vous de prendre en compte la largeur de l'en-tête de la colonne, aussi, bien sûr).
Si vos lignes sont à venir "un par un", et l'alignement est cruciale, vous aurez à cache ou mémoire tampon les lignes d'arrivée (dans la mémoire) si elles correspondent, sinon sur un fichier de disque que vous aurez plus tard "rewind" et re-lire à partir du début), en prenant soin de garder à jour le vecteur de "maximum de la largeur de chaque colonne" en tant que lignes viennent. Vous ne pouvez pas afficher quoi que ce soit (pas même les têtes!), si le fait de garder l'alignement est crucial, jusqu'à ce que vous avez vu à la dernière ligne (à moins que vous en quelque sorte comme par magie, ont connaissance préalable des colonnes de largeurs, bien sûr;-).