バイナリファイルから符号なしバイトを読み取る必要があります。 だから私は次のコードを書いた。ファイルストリームからunsigned charを読み取るC++
#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バイトになります。
ウェブ上でこの作業を行うためにロケールを設定する必要があるとの言及があるようです。これを正確に行う方法は私には分かりません。
同じコードはunsigned char型を使用して代わりに「unsigned char型」
の上記のコードをデータ型「文字」を使用して動作しますが、Windows上で動作するようですが、coLinuxのFedoraの2.6.22.18で実行して失敗しました。
Linuxで動作させるには、何が必要ですか?
ない質問への答えが、関連します。C++の文字列クラスの定義は 'typedef basic_string string;'なので、unsigned char文字列クラスを常に 'typedef basic_string bytestring;にすることができます。 –
trueですが、BINARYファイルを読み込みたい – David
.read()と.write()はバイナリ/テキストに使用できます。ストリーム演算子<< and >>はテキストファイルのみです。コンピュータ上のすべてのデータは最終的にはバイナリであり、それをどのように解釈するか選択します。 – sfossen