Подтвердить что ты не робот

Форматирование cout

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

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

Test                 1
Test2                2
Iamlongverylongblah  2
Etc                  1

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

cout < var1 < "\ t\t" < var2 < епсИ;

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

Test                 1
Test2                  2
Iamlongverylongblah         2
Etc                  1
4b9b3361

Ответ 1

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

Ответ 2

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

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

Ответ 3

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

Ответ 4

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

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