【发布时间】:2016-01-04 15:54:24
【问题描述】:
我已经使用了这个解决方案(c++) Read .dat file as hex using 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 打印垃圾。
我错过了什么?
【问题讨论】:
-
std::cout << buffer.str();? -
与你的问题无关,但在几乎所有情况下(包括这个),
while (!fin.feof())都不会像你期望的那样工作。而是做while (fin >> x)。
标签: c++ string hex fstream stringstream