#include "stdafx.h"
#include <fstream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
ifstream in("111.jpg", ios::in|ios::binary);
ofstream out("222.jpg", ios::out|ios::binary);
in.seekg(ios::end);
int iSize = (int)in.tellg();
char* buffer = new char[iSize+1];
in.clear();
in.read(buffer, iSize);
out.write(buffer, iSize);
out.close();
in.close();
delete [] buffer;
return 0;
}
Вопрос по файловым потокам в С++
Код:
В результате выполнения программы мы получаем выходной файл 222.jpg размеров в 2 байта. Собственно, вся проблема заключается в том, что в результате этого кода мы получаем неверный размер файла.
Код:
int iSize = (int)in.tellg();
В чем проблема я понять так и не могу... Может быть что то подскажите?
Аналогичный код, написанный на С, работает не вызывая нареканий.
Цитата: Artem_3A
Есть код.
В результате выполнения программы мы получаем выходной файл 222.jpg размеров в 2 байта. Собственно, вся проблема заключается в том, что в результате этого кода мы получаем неверный размер файла.
В чем проблема я понять так и не могу... Может быть что то подскажите?
Аналогичный код, написанный на С, работает не вызывая нареканий.
Код:
in.seekg(ios::end);
В результате выполнения программы мы получаем выходной файл 222.jpg размеров в 2 байта. Собственно, вся проблема заключается в том, что в результате этого кода мы получаем неверный размер файла.
Код:
int iSize = (int)in.tellg();
В чем проблема я понять так и не могу... Может быть что то подскажите?
Аналогичный код, написанный на С, работает не вызывая нареканий.
вроде должно быть так
Код:
in.seekg(0,ios::end);
т.е. должна или быть задана конкретная позиция в файловом потоке -
например -
Код:
in.seekg(1000);
- или позиция относительно начала/конца. Данным кодом мы устанавливаем позицию в конец файла
Немного более подробно вопрос освещен в
спс, теперь все работает как часы!