Вы не указываете, как вы измеряете «эффективность» в этом контексте. Вот одно решение, которое эффективно с точки зрения кода, который вы должны написать, и количества распределений:
#include <string>
#include <iostream>
using namespace std;
void format(const std::string& msg)
{
std::string banner(msg.length(), '=');
cout << banner << endl
<< msg << endl
<< banner << endl;
}
int main(int argc, char *argv[])
{
format("Some message");
format("Other message long one");
return 0;
}
Я могу представить другие альтернативы, которые не выделяют временную строку для баннеров, но могут стоить дороже самой печати.