Как написать "n" копии символа для ostream, как в python

В python следующая инструкция: print 'a'*5 выводит aaaaa. Как написать что-то подобное в С++ в сочетании с std::ostream, чтобы избежать конструкции for?

Ответ 1

Очевидным способом будет fill_n:

std::fill_n(std::ostream_iterator<char>(std::cout), 5, 'a');

Другой возможностью было бы просто построить строку:

std:cout << std::string(5, 'a');

Ответ 2

Используйте несколько сложных способов: os << setw(n) << setfill(c) << ""; Где n - число char c для записи

Ответ 3

Вы можете сделать что-то подобное, перегрузив оператор * для std::string. Вот небольшой пример

#include<iostream>
#include<string>
std::string operator*(const std::string &c,int n)
{
    std::string str;
    for(int i=0;i<n;i++)
    str+=c;
    return str;
}
int main()
{
    std::string str= "foo";
    std::cout<< str*5 <<"\n";
}