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

标签 c++ io ostream

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

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/

相关文章:

c++ - fatal error : libxml/xmlmemory. h:没有那个文件或目录

c++ - 特定的 C++ 宏

c++ - 在 C++ 中重载 IO 运算符时使用 cout/cin?

java - 从文本文件中读取一大行字符串

c++ - istream >> ostream << 使用 * 指针重载运算符

c++ - ostream 不显示 proberly c++

c++ - 打印字符数组的地址

c++ - 资源图像不工作 C++

c++ - 当我将 stdin 和 ungetc 的缓冲区关闭到 stdin 时发生了什么?

c++ - 这个算法的复杂度是多少?