我怎样才能避免这段代码中的换行符..
void ListEl::display() {
BaseEl::display();
cout << " Asis: " << anemnesis << endl;
}
这里是 BaseEl::display()
void BaseEl::display() {
cout << "P: " << priority << "\tN: " << name << endl;
}
它总是打印 BaseEl::display();
的输出然后换行,然后是 " Asis: " << anemnesis << endl;
我试过了 cout << BaseEl::display() << " Asis: " << anemnesis << endl;
但它也没有用
最佳答案
不修改 BaseEl::display()
就无法解决这个问题在输出结束时停止生成新行。
一般来说,添加endl
不是一个好主意。到你自己的输出。如果调用者需要换行,让调用者这样做。
请注意,一种更类似于 C++ 的输出您自己的类的方法是提供 operator <<
的实现。为输出。如果你想用它进行虚拟分派(dispatch),在基类级别提供一个实现,并为派生类添加一个虚拟成员函数来覆盖:
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;
}
关于C++ 使用 cout << 避免换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27403647/