如何在C++中输出文件中的多个空格行

H'H*_*H'H 6 c++

我想知道在C++中是否有任何短命令用于在输出中添加多个空格行?(我知道"endl"和"\n")

谢谢你提前帮助.

log*_*og0 15

没有用于添加多个空间线的特殊设施.你可以这样做:

std::cout << "\n\n\n\n\n";
Run Code Online (Sandbox Code Playgroud)

或这个

for (int i = 0; i < 5; ++i)
  std::cout << "\n";
Run Code Online (Sandbox Code Playgroud)

或实施自己的 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);
Run Code Online (Sandbox Code Playgroud)

最后,推荐解决方案:

std::cout << std::string( 5, '\n' );
Run Code Online (Sandbox Code Playgroud)

  • 为什么定义一个特殊的运算符,当你可以写`std :: string(5,'\n')`?否则:你的`operator*`将不会在名称空间中找到,而不是定义它的名称空间.我在`std`中定义它:正式未定义的行为,但如果它是编译器(它可能会),它将起作用. (5认同)

Ale*_*lex 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;
    }
};
Run Code Online (Sandbox Code Playgroud)

用法是:

cout << "dfsdf" << mendl(4);
Run Code Online (Sandbox Code Playgroud)