Align cout format as table's columns


Question

I'm pretty sure this is a simple question in regards to formatting but here's what I want to accomplish:

I want to output data onto the screen using cout. I want to output this in the form of a table format. What I mean by this is the columns and rows should be properly aligned. Example:

Test                 1
Test2                2
Iamlongverylongblah  2
Etc                  1

I am only concerned with the individual line so my line to output now (not working) is

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

Which gives me something like:

Test                 1
Test2                  2
Iamlongverylongblah         2
Etc                  1
1
29
3/6/2019 2:51:54 PM

Accepted Answer

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
10/22/2013 8:00:26 PM

I advise using Boost Format. Use something like this:

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

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon