Я хочу прочитать неподписанные байты из двоичного файла.
Поэтому я написал следующий код.
#include <iostream>
#include <fstream>
#include <vector>
#include <istream>
std::string filename("file");
size_t bytesAvailable = 128;
size_t toRead = 128;
std::basic_ifstream<unsigned char> inf(filename.c_str(), std::ios_base::in | std::ios_base::binary) ;
if (inF.good())
{
std::vector<unsigned char> mDataBuffer;
mDataBuffer.resize(bytesAvailable) ;
inF.read(&mDataBuffer[0], toRead) ;
size_t counted = inF.gcount() ;
}
Это приводит к чтению всегда в 0 байтов, как показано подсчитанной переменной.
Кажется, в Интернете есть ссылки, в которых говорится, что мне нужно установить локаль, чтобы эта работа работала. Как это сделать точно мне не понятно.
Тот же код работает с использованием типа данных «char» вместо «unsigned char»
Приведенный выше код с использованием unsigned char, похоже, работает в Windows, но не работает в colinux Fedora 2.6.22.18.
Что мне нужно сделать, чтобы заставить его работать на Linux?