Выровнять формат cout как столбцы таблицы - PullRequest
29 голосов
/ 09 ноября 2008

Я почти уверен, что это простой вопрос в отношении форматирования, но вот что я хочу сделать:

Я хочу вывести данные на экран, используя cout. Я хочу вывести это в виде таблицы. Под этим я подразумеваю, что столбцы и строки должны быть правильно выровнены. Пример:

Test                 1
Test2                2
Iamlongverylongblah  2
Etc                  1

Меня интересует только отдельная строка, поэтому моя строка для вывода сейчас (не работает) равна

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

Что дает мне что-то вроде:

Test                 1
Test2                  2
Iamlongverylongblah         2
Etc                  1

Ответы [ 4 ]

51 голосов
/ 09 ноября 2008

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;
}
10 голосов
/ 09 ноября 2008

Я советую использовать Boost Format . Используйте что-то вроде этого:

cout << format("%|1$30| %2%") % var1 % var2;
2 голосов
/ 09 ноября 2008

Вы должны найти длину самой длинной строки в первом столбце. Затем вам нужно вывести каждую строку в первом столбце в поле, длина которого равна длине этой самой длинной строки. Это обязательно означает, что вы ничего не можете написать, пока не прочитаете каждую строку.

0 голосов
/ 15 декабря 2013

вы можете сделать это с

string str = "somthing";
printf ("%10s",str);
printf ("%10s\n",str);
printf ("%10s",str);
printf ("%10s\n",str);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...