2008-11-09 6 views
26

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

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

Test     1 
Test2    2 
Iamlongverylongblah 2 
Etc     1 

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

соиЬ < < var1 < < "\ т \ т" < < var2 < < епсИ ;

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

Test     1 
Test2     2 
Iamlongverylongblah   2 
Etc     1 

ответ

44

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

Не дает мне то, что я хочу .. ты уверена, что это правильно? – BobS 2008-11-09 02:00:28

+0

Вы забыли добавить «<< left». Это необходимо, если вы хотите, чтобы фиксированные поля с выровненными по левому краю. – 2008-11-09 02:06:54

11

Я советую использовать Boost Format. Используйте примерно следующее:

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

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

-2

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

string str = "somthing"; 
printf ("%10s",str); 
printf ("%10s\n",str); 
printf ("%10s",str); 
printf ("%10s\n",str); 
Смежные вопросы