gpt4 book ai didi

c++ - 将可执行文件加载到char vector 后,数据无效

转载 作者:行者123 更新时间:2023-12-02 09:58:08 25 4
gpt4 key购买 nike

我正在尝试在vector<char>中加载可执行文件(.exe),但从未加载完整数据,仅加载了 MZx 字符串。如何解决?

    vector<char> buffer;

ifstream infile;
infile.open("putty.exe", ios::binary);
infile.seekg(0, ios::end);
size_t file_size_in_byte = infile.tellg();
buffer.resize(file_size_in_byte);
infile.seekg(0, ios::beg);
infile.read(&buffer[0], file_size_in_byte);
infile.close();

cout << buffer.data() << endl;

ofstream ofs("data.bin", ofstream::out);

ofs << buffer.data();

ofs.close();

最佳答案

给定vector<char> buffer,然后buffer.data()返回char*。因此,ofs << buffer.data()将char指针发送到流。 char指针的<<重载将其作为字符串处理-以空终止符结尾的字符序列。这不是处理任意字节集(例如.exe文件的内容)所需要的。因此,您的输出在第一个空字节处停止。
您需要以其他方式将数据发送到输出流。 write函数应该起作用。例如:

ofs.write(buffer.data, buffer.size());

关于c++ - 将可执行文件加载到char vector 后,数据无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64254569/

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