Манипулятор 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 ++ - это безопасный тип, но разумный небезопасный.