@byreoil

C++ ifstream::read почему не читает бинарный файл полностью?

Здравствуйте!
Столкнулся с проблемой при работе с бинарным файлом в C++.
Вот фрагмент кода:
//! Get memory to File
    bool MemFromFile(const char * strFileName, std::vector<char> &DataOut)
    {
        DataOut.clear(); // clearing data in vector for add new data

        std::ifstream inFile(strFileName); // open file
        if(!inFile.is_open())
            return false; // Can't create or read file
		
		do
		{
			char Buf = '\0';
			if (inFile.read(&Buf, 1))
				DataOut.push_back(Buf);
		} while (inFile);
		
        inFile.close(); // close file
        return true;
    }

Вот сам бинарный файл:
5b5e3201a37e8330583822.png
Читает только 3 первых символа из файла(после 2a не читает).
Данная проблема проявляется под windows, IDE Visual Studio 2015, проверял под linux(Ubuntu 14) компилятор g++, и всё работает нормально.

UPD: оформил исходный код через тэг
  • Вопрос задан
  • 2042 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Символ с кодом 0x1A в Windows (а ранее в DOS) распознаётся как конец текстового файла (EOF).
Открывайте файл в бинарном режиме
std::ifstream inFile(strFileNAme, ios::binray);
И на будущее - код надо оформлять тэгом, а не в виде картинки (см. Правила, п.3.8)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы