gpt4 book ai didi

c++ - 如何将二进制文件的十六进制表示形式保存到 std::string 中?

转载 作者:行者123 更新时间:2023-11-27 22:54:17 33 4
gpt4 key购买 nike

我用过这个解决方案(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::string;你有一个 std::stringstream。并且您不能“打印”一个字符串流,但是您可以使用 str() 成员函数获取其缓冲区的 std::string 表示。

那么你的意思可能是:

std::cout << buffer.str();

有更简洁的方法可以做到这一点,但以上内容可以帮助您入门。

顺便说一句,你的循环是错误的。您过早地检查 EOF。

关于c++ - 如何将二进制文件的十六进制表示形式保存到 std::string 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34594926/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com