Автоматический интервал с iomanip

Для следующего кода:

cout << left << setw(20) << "Example Header\n";
cout << setw(60) << setfill('-') << "-" << endl;

Вторая строка (с тире) почему-то с отступом в 5 пробелов. Сначала я подумал, что что-то автоматически становится вкладкой, но я не могу найти причину, почему это произошло. Независимо от того, что идет во второй строке, автоматически ставится шесть пробелов, которые я не могу удалить. Несмотря на то, что простой обходной путь для меня состоял бы в том, чтобы просто заполнить вторую строку пробелами, мне все еще любопытно узнать, почему моя программа вставляет эти пробелы.


person Aaron Thomsen    schedule 01.02.2017    source источник


Ответы (1)


cout << left << setw(20) << "Name" << setw(20) << "Number" << setw(20) << "Points Scored" 
     << endl;
  // ^^^^^^^^

вместо использования '\n' исправляет это.

См. демонстрацию.

person πάντα ῥεῖ    schedule 01.02.2017
comment
Спасибо, это работает. Это ненадолго пришло мне в голову, но ответы, которые я нашел, говорили, что единственная разница между '\n' и endl заключалась в том, что endl очищал выходной буфер. Почему это работает? - person Aaron Thomsen; 02.02.2017
comment
@JesperJuhl Я все еще изучаю этот вопрос. Если у вас есть хороший, не стесняйтесь звонить. - person πάντα ῥεῖ; 02.02.2017
comment
Возможно, тот факт, что Points Scored\n имеет длину ровно 14=20-6 символов, должен насторожить. - person n. 1.8e9-where's-my-share m.; 02.02.2017