未缓冲的I/O不工作
Unbuffered I/O is not working
我有这个程序,应该禁用std::cout
的缓冲。我想打印我写到输出设备的内容,但是当我打印str
时,什么也没有输出。
#include <iostream>
#include <sstream>
#include <string>
int main()
{
std::cout.rdbuf()->pubsetbuf(0, 0);
std::cout.unsetf(std::ios::unitbuf);
std::cout << "Hello, Worldn";
std::stringstream ss;
ss << std::cout.rdbuf();
std::string str{ss.str()};
std::cout << str; // nothing
// str.size() == 0
}
std::cout.rdbuf()->pubsetbuf(0, 0);
这并不一定做任何事情,因为cout
没有指定使用std::filebuf
。
std::cout.unsetf(std::ios::unitbuf);
此清除 unitbuf
位,因此I/O是而不是未缓冲的。而调用setf
应该请求未缓冲的I/O。
ss << std::cout.rdbuf();
尝试读取 cout,所以它不会提取任何内容。
仅依靠setf( std::ios::unitbuf )
就能正常工作:
#include <iostream>
#include <unistd.h>
int main() {
std::cout.setf( std::ios::unitbuf );
std::cout << "Hel";
write( 1, "lo, wo", 6 );
std::cout << "rld!n";
}
相关文章:
- QSqlquery prepare()和bindvalue()不工作
- 导入库可以跨dll版本工作吗
- 以螺旋方式打印矩阵的程序.(工作不好)
- 对象指针在c++中是如何工作的
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- C++为线程工作动态地分割例程
- 为什么我的 std::ref 无法按预期工作?
- 布尔比较运算符是如何在C++中工作的
- SampleConsensusPrerejective(ext.RANSAC)是如何真正工作的
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 为什么std::condition_variable notify_all的工作速度比notify_one快(对于随机请
- <<操作员在下面的行中工作
- 什么是Qt帧缓冲工作机制
- libcURL缓冲文件上传不工作
- 在c++中输入缓冲是如何工作的
- 未缓冲的I/O不工作
- OpenGL帧缓冲函数不能在单独的类中完全工作
- OpenGL顶点缓冲对象不工作