Visual Studio C++ で簡単なコンソール アプリケーションを作成しています。.cer
拡張子がバイト配列のバイナリファイルを読み込みたいです。
ifstream inFile;
size_t size = 0;
char* oData = 0;
inFile.open(path, ios::in|ios::binary);
if (inFile.is_open())
{
size = inFile.tellg(); // get the length of the file
oData = new char[size+1]; // for the '\0'
inFile.read( oData, size );
oData[size] = '\0' ; // set '\0'
inFile.close();
buff.CryptoContext = (byte*)oData;
delete[] oData;
}
しかし、起動すると、すべてのoData
文字に同じ文字が表示され、毎回別の文字が表示されます。次に例を示します。
oData = "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@...".
それから私は別の方法を試しました:
std::ifstream in(path, std::ios::in | std::ios::binary);
if (in)
{
std::string contents;
in.seekg(0, std::ios::end);
contents.resize(in.tellg());
in.seekg(0, std::ios::beg);
in.read(&contents[0], contents.size());
in.close();
}
現在、コンテンツには非常に奇妙な値が含まれています。値の一部は正しく、一部は負で奇妙な値です (おそらくsigned char
とunsigned char
? に関連している可能性があります)。
誰にもアイデアはありますか?
よろしくお願いします!