Как удалить лишнее пространство, созданное при использовании setw в C ++? - PullRequest
1 голос
/ 30 сентября 2019

Я пытаюсь отформатировать вывод файла, используя setw, но безуспешно. Я понимаю, что мои выходные данные меняются в зависимости от длины символа переменной перед ним, однако я не знаю, как изменить свой код, чтобы каждая строка печаталась независимо от строки перед ней. (См. Ссылку на изображение)

Поскольку слово "Плавание" длиннее всех других типов слов, это приводит к сдвигу информации для этих столбцов, что делает отчет ужасным. Кроме того, кажется, что запятая в столбце «Количество» также смещает вывод.

fout    << s.getID() 
        << right << setw(11) << addCommas(s.getAmount()) << "\t"
        << left << setw(14) << s.getType() << "\t"
        << left << setw(14) << s.getLength() << "\t"
        << left << setw(10) << s.getDate() << "           "
        << left << setw(15) << s.getFname() << "\t"
        << s.getLname() << endl;
lineCount++;

Вывод текущей программы

(в настоящее время работает с этими значениями setw, поэтому не обращайте внимания на то, что в данный момент они не совпадают с заголовком)

РЕДАКТИРОВАТЬ: Изменил мой шрифт в VS на Helvetica, потому что Консолас повредил мне глаза, это также повлияло на вывод моего .dat, так что по сути это не проблема. Хлоп.

1 Ответ

0 голосов
/ 30 сентября 2019

Если вы добавите std::internal к своему выражению std::cout, оно вытеснит оставшиеся пробелы, и после этого вы сможете сделать новый setw. Это может работать лучше, чем вкладки, особенно если вы не используете моноширинный шрифт. См. Пример в этого ответа. Убедитесь, что ваш setw достаточно большой, чтобы вместить ваши самые большие слова ... и не делайте using namespace std, это плохая практика. Позор тебе! ;)

...