【发布时间】:2019-12-30 14:50:10
【问题描述】:
我有缓冲区,比如说 65536 字节长。如何在不检查换行符或 '\0' 字符的情况下尽快(使用 IO 硬件)将标准输入读入该缓冲区。我保证标准输入中的字符数将始终与我的缓冲区匹配。
到目前为止,我有这个:
#include <iostream>
#include <stdio.h>
#define BUFFER_LENGTH 65536
int main()
{
std::ios::sync_with_stdio(false);
setvbuf(stdout, NULL, _IONBF, BUFFER_LENGTH);
char buffer[BUFFER_LENGTH];
// now read stdin into buffer
// fast print:
puts(buffer); // given buffer is null terminated
return 0;
}
是否有类似于puts() 的东西可以快速读入缓冲区而不是控制台?
【问题讨论】:
-
不确定我是否理解该请求。 fread 看起来像你想要的吗?
-
@AProgrammer 是的,fread 有效。我只是不知道您可以将标准输入作为 FILE* 传递。