我想知道C ++中是否有用于在输出中添加多个空格行的短命令? (我知道“endl”和“\ n”)
感谢您提前提供任何帮助。
答案 0 :(得分:15)
没有用于添加多个空间线的特殊设施。 你可以这样做:
std::cout << "\n\n\n\n\n";
或者
for (int i = 0; i < 5; ++i)
std::cout << "\n";
或实施您自己的operator*
std::string operator*(std::string const &s, std::size_t n)
{
std::string r;
r.reserve(n * s.size());
for (std::size_t i = 0; i < n; ++i)
r += s;
return r;
}
std::cout << (std::string("\n") * 5);
最后,建议的解决方案:
std::cout << std::string( 5, '\n' );
答案 1 :(得分:8)
您可以编写自己的操纵器,它可以一次插入多个换行符。我们称之为mendl
(多个endl):
class mendl
{
public:
explicit mendl(unsigned int i) : n(i) {}
private:
unsigned int n;
template <class charT, class Traits>
friend basic_ostream<charT,Traits>& operator<< (
basic_ostream<charT,Traits>& os,
const mendl& w)
{
// the manipulation: insert end-of-line characters and flush
for (unsigned int i=0; i<w.n; i++)
os << '\n';
os.flush();
return os;
}
};
用法是:
cout << "dfsdf" << mendl(4);
答案 2 :(得分:3)
您始终可以构建一个包含任意数量的换行符(技术上为LF)的字符串,如下所示:
cout << "Whatever..." << string(42, '\n');
这将在“Whatever ...”之后输出42个新行。当然,另一种方法是定义一种新类型(例如mendl
称为std::string
。)
您可以做很多事情,但最简单和最直接的方法是使用上面的flush
构造函数。但是,可能需要{{1}}您的信息流,具体取决于您的使用情况。
答案 3 :(得分:2)
while(k--)cout<<"\n"; // k is number of lines you wanted
答案 4 :(得分:1)
不,标准库包含I和O方法,但数据流中的内容完全取决于您。
endl是您要求的一半。两次调用它会得到你想要的。或者,您可以定义一个endl2x,它可以输出2个换行符,或者有一个取一个参数来定义要发出的数量
答案 5 :(得分:0)
您可以尝试编写一个函数来获取输出流而没有新行来打印返回输出流
答案 6 :(得分:0)
如果使用恒定数量的换行符,可以考虑定义一个常量变量
例如,
const char nl5[] = "\n\n\n\n\n";
你可以在像std :: endl这样的cout的上下文中使用它。
这是整个代码。 。
#include <iostream>
int main()
{
using namespace std;
const char nl5[] = "\n\n\n\n\n";
cout << "ln1" << nl5 << endl;
cout << "ln2" << nl5 << endl;
}