我一直在搞乱原始图像标题,比如位图标题,图标标题等,只是为了看看如何使用它来包装自定义数据,但我有一个问题,如果我从流中读取向量包含与存储在磁盘上的文件一样多的字节,但当我将其内容写入文件时(即使没有ppm标头)它包含垃圾字符,它比原始文件长约150个字节:L这让我觉得输入流附加垃圾字符。
这是我的代码,StreamReadFile和GetFilesize只是我需要的一些功能,因为我在我的项目中有很多读写文件^^
vector<char> StreamReadFile(LPWSTR path, long FileSize, int pos) {
ifstream InputStream(path, ios::in | ios::binary);
vector<char> buffer(FileSize);
long ticks = 0;
if(pos > 0) {
InputStream.seekg(pos);
}
while(FileSize > ticks) {
buffer[ticks] = InputStream.get();
ticks++;
}
return buffer;
}
long GetFileSize(LPWSTR path) {
ifstream stream(path, ios_base::in | ios_base::binary);
if(stream.is_open()) {
stream.seekg(0, ios_base::end);
return (long) stream.tellg();
}
return -1;
}
int CreatePPM(vector<char> image) {
#pragma pack(push, 1)
PPMFILEHEADER ppm;
ppm.width = image.size() / 2;
ppm.height = image.size() / 2;
ppm.size = image.size();
ppm.data = image.data();
vector<char> input = StreamReadFile(L"MessageBox.exe", GetFileSize(L"MessageBox.exe"), 0);
ofstream filestream("drop.ppm");
filestream.write(input.data(), input.size());
filestream.close();
#pragma pack(pop)
return 0;
}
任何帮助都将非常感谢^^
最好的问候Paze。