结束是否刷新缓冲区

Des*_*ard 2 c++ io

目前我正在自学C++.
C++入门说:

cout << "hi!" << ends; //writes hi and a null, then flushes the buffer
Run Code Online (Sandbox Code Playgroud)

但是C++标准库第二版说:

ends: Outputs '\0'
Run Code Online (Sandbox Code Playgroud)

而cplusplus上的引用也没有提到刷新缓冲区.
那么我应该遵循哪一个?

Bil*_*nch 5

摘自C++ 2011 27.7.3.8

namespace std {
  template <class charT, class traits>
    basic_ostream<charT,traits>& endl(basic_ostream<charT,traits>& os);
}
Run Code Online (Sandbox Code Playgroud)

效果:os.put(os.widen(’\n’))然后调用os.flush().返回:os.

namespace std {
  template <class charT, class traits>
  basic_ostream<charT,traits>& ends(basic_ostream<charT,traits>& os);
}
Run Code Online (Sandbox Code Playgroud)

效果:在输出序列中插入空字符:调用os.put(charT()).返回:os.

标准非常清楚,std::endl刷新流,但std::ends事实并非如此.