Получение ненужных символов при чтении из потока и запись его обратно в файл

я возился с необработанными заголовками изображений, такими как заголовки растровых изображений, заголовки значков и т. д., просто чтобы посмотреть, как можно использовать его для переноса пользовательских данных внутрь, но у меня есть одна проблема, если я читаю из потока, вектор содержит столько же байт как файл, хранящийся на диске, но когда я записываю его содержимое в файл (даже без заголовка 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.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector