如何从标准输入输出前4个字节

问题描述

我有这个程序:

#include <iostream>
int main() {
    std::freopen(nullptr,"rb",stdin);
    char buf[4];
    std::fread(buf,1,4,stdin);
    std::cout << buf << std::endl;
}

我认为,这可以做到以下几点。

  1. 重新打开标准输入以读取字节
  2. 初始化大小为4的char缓冲区数组
  3. 一次将一个字节读到buf
  4. 总共4个字节
  5. 从stdin中读取
  6. 打印出buf的内容

我有一个文件test,其中包含此4s���K$d877cc15-9569-4880-aea6-64a0466ebf3ch�

然后file -bi test给出application/octet-stream; charset=binary

当我这样做

cat test | main

我什么也没得到。

但是,如果我创建一个包含test2文件test123。然后做:

cat test2 | main

我得到:test符合预期。

因此,这使我认为我以某种方式无法读取二进制输入。

我的问题是什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)