说我要打印:
============
Some message
============
和
=======================
Other Message long one
=======================
“=”的数量根据消息长度而变化。打印这种东西最有效的方法是什么?
没有提升,请STL。
答案 0 :(得分:7)
std::string line(msg.length(), '=');
cout << line << "\n" << msg << "\n" << line << endl;
答案 1 :(得分:2)
在此上下文中,您未指定测量“效率”的方式。这是一个在您必须编写的代码和分配数量方面有效的解决方案:
#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;
}
我可以设想避免为横幅分配临时字符串的其他替代方案,但这些可能会增加实际打印的成本。
答案 2 :(得分:2)
iomanip变种,只是为了好玩。
const std::string hello("hello world!");
std::cout << std::setfill('=') << std::setw( hello.length() + 1) << "\n"
<< hello << "\n";
<< std::setfill('=') << std::setw( hello.length() + 1 ) << "\n";