#include <iostream>
#include <sstream>
#include <string>
using namespace std;
string repeat(const string& s, size_t n, const char delim = '\0') {
stringstream ss;
while (n--) ss << s << delim;
return ss.str();
}
int main() {
auto s = repeat(string(50, '_'), 25, '\n');
cout << s;
}
Каждая линия на своей высоте. Одну нарисовали, вторая чуть выше, третья еще выше и т. д.
Конечно, если таких линий будет штук 500, то писать отдельную функцию для каждой из них неразумно. Лучше запускать одну функцию через цикл с изменяемыми аргументами.
Обычно я так и делаю, но правильно ли это?