Я использовал это решение (С++) Чтение файла .dat как шестнадцатеричный, используя ifstream, но вместо того, чтобы печатать его в std::cout
, я хотел бы сохранить шестнадцатеричное представление двоичного файла в std::string
#include <fstream>
#include <sstream>
#include <iostream>
#include <string>
#include <iomanip>
int main(int argc, char** argv)
{
unsigned char x;
std::ifstream fin(argv[1], std::ios::binary);
std::stringstream buffer;
fin >> std::noskipws;
while (!fin.eof()) {
fin >> x ;
buffer << std::hex << std::setw(2) << std::setfill('0') << static_cast<int>(x);
}
std::cout << buffer;
}
Печать в cout
работает, но сохранение этого содержимого в buffer
, а затем попытка распечатать его в cout
печатает мусор.
Что мне не хватает?
while (!fin.feof())
не будет работать так, как вы ожидаете. Вместо этого сделайтеwhile (fin >> x)
. - person Some programmer dude   schedule 04.01.2016eof
считается вредным. - person molbdnilo   schedule 04.01.2016