Манипулятор функций C ++ setiosflags - неопределенный отступ - PullRequest
4 голосов
/ 10 июля 2020

Я изучаю C ++ и сосредотачиваюсь на cout функциях манипулятора.

Запуская следующий код, я получаю отступ во второй строке, содержащий Gauthier.

#include <iostream>
#include <iomanip>

int main()
{
    std::cout << std::setw(10) << std::setiosflags(std::ios::left)
        << "Mathieu\n"
        << "Gauthier\n"
        << "Paul\n"
        << "Louis\n"
        << "Pierre\n"
        << std::endl;
    return 0;
}

Может кто-нибудь объяснить мне, что происходит? Почему Gauthier имеет отступ, а другие имена нет?

Mathieu
  Gauthier
Paul
Louis
Pierre

Program ended with exit code: 0

1 Ответ

4 голосов
/ 10 июля 2020

std::ios::left сообщает, что нужно добавить символы-заполнители справа, т.е. добавляет несколько символов в первую строку, поэтому "Mathieu\n" "становится" "Mathieu\n ". В конце стоит символ новой строки ('\n'), поэтому добавленные пробелы перемещаются на следующую строку (Gauthier). Так что это не отступ второй строки, это завершающие символы от первой.

...