从文件中连续读取管道字节

时间:2014-02-21 02:47:22

标签: c++ linux unix pipe

我有以下代码将文件中的字节管道输入到我的C ++应用程序中:

  char *buffer = new char[SIZE];

  while (!std::cin.eof()) {
      std::cin.read(buffer, SIZE);
      for(int i=0; i<SIZE; i++){
        std::cout << buffer[i] << std::endl;
      }
  }

然而,问题是我只输出/读取管道的第一个SIZE字节。如何读取管道大小大于SIZE的管道中的所有字节?

1 个答案:

答案 0 :(得分:2)

读取操作后未检查

gcount()。 正确的方法:

while (!std::cin.eof()) {
      std::cin.read(buffer, SIZE);
      for(int i=0; i<cin.gcount(); i++){
        std::cout << buffer[i] << std::endl;
      }
  }