Pregunta

Estoy bastante seguro de que esta es una pregunta simple con respecto al formato, pero esto es lo que quiero lograr:

Quiero generar datos en la pantalla usando cout. Quiero generar esto en forma de formato de tabla. Lo que quiero decir con esto es que las columnas y las filas deben estar correctamente alineadas. Ejemplo:

Test                 1
Test2                2
Iamlongverylongblah  2
Etc                  1

Solo me preocupa la línea individual, por lo que mi línea de salida ahora (no funciona) es

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

Lo que me da algo como:

Test                 1
Test2                  2
Iamlongverylongblah         2
Etc                  1
¿Fue útil?

Solución

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;
}

Otros consejos

Aconsejo usar Formato de refuerzo . Use algo como esto:

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

Debe encontrar la longitud de la cadena más larga en la primera columna. Luego, debe generar cada cadena en la primera columna de un campo con la longitud de esa cadena más larga. Esto necesariamente significa que no puede escribir nada hasta que haya leído todas y cada una de las cadenas.

puedes hacerlo con

string str = "somthing";
printf ("%10s",str);
printf ("%10s\n",str);
printf ("%10s",str);
printf ("%10s\n",str);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top