Форматирование в Консоль, C ++ - PullRequest
1 голос
/ 20 сентября 2009

Я пытаюсь отформатировать вывод в окне консоли в четырех отдельных полях, расположенных равномерно.

out << left << setw(24) << "Name" << "Location" 
<< right << setw(20) << "Acres " << "Rating" << endl;

out << left << setw(24) << "----" << "--------" 
<< right << setw(20) << "----- " << "------" << endl;

while ( current_node )
    {
        out << left << setw(24) << current_node->item.getName() // equivalent tabs dont work?
            << current_node->item.getLocation() << right << setw(20) 
            << current_node->item.getAcres()        
            << " " << current_node->item.getRating()
            << endl;

        current_node = current_node->nextByName;
    }

Приведенный выше код, по некоторым причинам, не распределяет все это равномерно, когда setw (n) имеют одинаковые значения ...

1 Ответ

3 голосов
/ 20 сентября 2009

Манипулятор setw() влияет только на следующее поле вывода - он не «липкий». Поэтому вам нужно указать, что вы хотите для каждого выходного поля, а не просто изменить его один раз и ожидать, что оно будет действовать на каждый из следующих выходных элементов.

Я думаю, вы хотите что-то вроде:

cout << left << setw(24) << "Name" << setw(24) << "Location" ;
cout << right << setw(20)<< "Acres" << setw(20) << "Rating" << endl;

cout << left << setw(24) << "----" << setw(24) << "--------" ;
cout << right << setw(20) << "-----" << setw(20) << "------"  << endl;

while ( current_node )
    {
        cout << left << setw(24) << current_node->item.getName()
                     << setw(24) << current_node->item.getLocation()
             << right 
                     << setw(20) << current_node->item.getAcres()
                     << setw(20) << current_node->item.getRating()
             << endl;

        current_node = current_node->nextByName;
    }

Потоковый ввод-вывод C ++ - это безопасный тип, но разумный небезопасный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...