Примечание: Я обеспокоен тем, что опубликованные вами данные содержат фактические адреса электронной почты и информацию о реальных людях, которые могут быть или не быть конфиденциальными и защищенными. Если это так, я думаю, что это нарушение конфиденциальности, что является незаконным. Даже с согласия нет необходимости размещать личные данные на этом форуме; Я бы посоветовал вам удалить эти данные из вашего поста и больше не делать этого в будущем.
Как уже упоминалось в комментариях, манипулятор setw
применяется только к следующей строке, поэтому
cout << left << setw(15) << "{" << days[0] << ", " << days[1] << ", " << days[2];
установит ширину 15 только для символа {
(аналогично в строке с "First Name: "
, et c.). Стоит также отметить, что если строка превышает указанную ширину, она будет содержать следующее содержимое и нарушит выравнивание ваших столбцов; поэтому вам нужно установить ширину, думая о максимально возможном содержании.
Вот рабочий пример для реализации того, что вы хотите, используя stringstream
для формирования строки до ее печати ( setw
*1021* выводит:
First Name: Robert Last Name: Smith Email: example@foo.com Age: 19 {20, 40, 33} Degree Program: SOFTWARE
First Name: Alice Last Name: Smith Email: example@bar.net Age: 22 {50, 58, 40} Degree Program: SECURITY
Обратите внимание, что я установил разные ширины для каждого поля в зависимости от ожидаемой длины содержания. Например, адреса электронной почты могут быть довольно длинными, но возраст редко превышает две цифры.