std::cout.rdbuf()->pubsetbuf(0, 0);
This doesn't necessarily do anything because cout
isn't specified to use a std::filebuf
.
std::cout.unsetf(std::ios::unitbuf);
This clears the unitbuf
bit so I/O is not unbuffered. Calling setf
instead should request unbuffered I/O as desired.
ss << std::cout.rdbuf();
This attempts to read cout so it will extract nothing.
Just relying on setf( std::ios::unitbuf )
works as expected:
#include <iostream>
#include <unistd.h>
int main() {
std::cout.setf( std::ios::unitbuf );
std::cout << "Hel";
write( 1, "lo, wo", 6 );
std::cout << "rld!
";
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…