C++避免使用cout <<换行符

Zel*_*elB 0 c++ io ostream

我怎么能避免这段代码中的换行符..

void ListEl::display() {
    BaseEl::display();
    cout << " Asis: " << anemnesis << endl;
}
Run Code Online (Sandbox Code Playgroud)

这是BaseEl :: display()

void BaseEl::display() {
    cout << "P: " << priority << "\tN: " <<  name << endl;
}
Run Code Online (Sandbox Code Playgroud)

它打印总是输出BaseEl::display();然后换行,然后" Asis: " << anemnesis << endl;

我尝试过,cout << BaseEl::display() << " Asis: " << anemnesis << endl;但它也没有用

das*_*ght 8

如果不修改BaseEl::display()以在输出结束时停止生成新行,则无法解决此问题.

通常,添加endl到您自己的输出是一个坏主意.如果他需要换行,让调用者这样做.

请注意,更类似于C++的输出自己类的方法是为operator <<输出提供实现.如果您希望使用它进行虚拟分派,请在基类级别提供实现,并为派生类添加虚拟成员函数以覆盖:

class BaseEl {
protected:
    virtual void writeToStream(ostream& ostr) const;
    friend ostream& operator << (ostream& ostr, const BaseEl& val);
};
class ListEl : public BaseEl {
protected:
    virtual void writeToStream(ostream& ostr) const;
};

ostream& operator << (ostream& ostr, const BaseEl& val) {
    val.writeToStream(ostr);
    return ostr;
}
Run Code Online (Sandbox Code Playgroud)