Постоянное чтение переданных байтов из файла

0

У меня есть следующий код для передачи байтов из файла в мое приложение 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?

  • 0
    Пожалуйста, прочитайте istream doc. Вы должны проверить возвращаемое значение!
  • 0
    cplusplus.com/reference/ios/ios/eof Похоже, что то, что я сделал, хорошо? : s
Показать ещё 6 комментариев
Теги:
pipe

1 ответ

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;
      }
  }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню