web-dev-qa-db-fra.com

Aligner le format cout en tant que colonnes du tableau

Je suis sûr que c'est une question simple en ce qui concerne le formatage, mais voici ce que je veux accomplir:

Je veux sortir des données sur l'écran en utilisant cout. Je veux sortir cela sous la forme d'un format de tableau. Ce que je veux dire par là, c'est que les colonnes et les lignes doivent être correctement alignées. Exemple:

Test                 1
Test2                2
Iamlongverylongblah  2
Etc                  1

Je ne suis concerné que par la ligne individuelle, donc ma ligne pour sortir maintenant (ne fonctionne pas) est

cout << var1 << "\t\t" << var2 << endl;

Ce qui me donne quelque chose comme:

Test                 1
Test2                  2
Iamlongverylongblah         2
Etc                  1
29
BobS

setw .

#include <iostream>
#include <iomanip>
using namespace std;

int main () {
  cout << setw(21) << left << "Test"    << 1 << endl;
  cout << setw(21) << left << "Test2"   << 2 << endl;
  cout << setw(21) << left << "Iamlongverylongblah"     << 2 << endl;
  cout << setw(21) << left << "Etc"     << 1 << endl;
  return 0;
}
51
Eugene Yokota

Je conseille d'utiliser Boost Format . Utilisez quelque chose comme ceci:

cout << format("%|1$30| %2%") % var1 % var2;
10
Leon Timmermans

Vous devez trouver la longueur de la chaîne la plus longue dans la première colonne. Ensuite, vous devez générer chaque chaîne dans la première colonne d'un champ, la longueur étant celle de la chaîne la plus longue. Cela signifie nécessairement que vous ne pouvez rien écrire avant d'avoir lu chaque chaîne.

2
sgm

tu peux le faire avec

string str = "somthing";
printf ("%10s",str);
printf ("%10s\n",str);
printf ("%10s",str);
printf ("%10s\n",str);
0
avishayhajbi