バイナリ ファイルから符号なしバイトを読み取りたい。そこで、以下のコードを書きました。
#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() ;
}
これにより、変数 count で示されるように、常に 0 バイトが読み込まれます。
これを機能させるにはロケールを設定する必要があると言っている参考文献がウェブ上にあるようです。これを正確に行う方法は私には明らかではありません。
同じコードは、「unsigned char」の代わりに「char」データ型を使用して機能します
unsigned char を使用した上記のコードは Windows では動作するようですが、colinux Fedora 2.6.22.18 では実行できません。
Linuxで動作させるにはどうすればよいですか?