powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Странный случай с std::ofstream
8 сообщений из 8, страница 1 из 1
Странный случай с std::ofstream
    #39142079
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет гуру С++!
Столкнулся со странной вещью.
Пытаюсь через буфер в памяти скопировать один файл в другой.
Вот кусок кода
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
	std::ifstream  in(ofn.lpstrFile,ios_base::in  | ios_base::binary);
	std::streampos fsize = in.tellg();
	in.seekg( 0, std::ios::end );
	fsize = in.tellg() - fsize;
	char* buffer = new char[fsize];

	in.read(buffer,fsize);

	std::ofstream out(lpwstrNewFile,ios_base::out | ios_base::binary);
	out.write(buffer,fsize);

	in.close();
	out.close();



Файл создается, длина равна файлу источнику. Но, вместо байтов исходника какая-то хрень!
Отладчик по какой-то причине не видит buffer (кстати еще вопрос - почему?), поэтому отследить что и когда происходит не получается.
Код практически один в один скопирован из примеров.
В чем проблема?
...
Рейтинг: 0 / 0
Странный случай с std::ofstream
    #39142080
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008В чем проблема?
Подумай где у тебя указатель чтения находится в исходном потоке после seek.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Странный случай с std::ofstream
    #39142083
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovSQL2008В чем проблема?
Подумай где у тебя указатель чтения находится в исходном потоке после seek.

т.е. нужно переставить указатель на начало файла?
...
Рейтинг: 0 / 0
Странный случай с std::ofstream
    #39142085
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перед чтением поставил
Код: plaintext
1.
     in.seekg( 0, std::ios_base::beg);
...
Рейтинг: 0 / 0
Странный случай с std::ofstream
    #39142088
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, вот спасибо, добрый человек!
Все заработало!
На С++ я писал когда то, но давно. Никак не думал, что за пределами файла можно читать
Забыл навыки!

Второй маленький вопрос.
Я из файла читаю байт, потом читаю 4 байта (long). Происходит ли выравнивание по границе двойного слова или байты читаются последовательно?
...
Рейтинг: 0 / 0
Странный случай с std::ofstream
    #39142092
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Впрочем, это уже не важно.
Спасибо за совет!
С остальным разберусь сам.
...
Рейтинг: 0 / 0
Странный случай с std::ofstream
    #39142251
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008Dimitry Sibiryakov, вот спасибо, добрый человек!
Все заработало!
На С++ я писал когда то, но давно. Никак не думал, что за пределами файла можно читать


Читать- то и нельзя, но ты ошибки чтения не проверяешь, и память тоже после выделения не защищаешь, поэтому пишешь ты в выходной файл какой то мусор из памяти.
...
Рейтинг: 0 / 0
Странный случай с std::ofstream
    #39142252
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008
Второй маленький вопрос.
Я из файла читаю байт, потом читаю 4 байта (long). Происходит ли выравнивание по границе двойного слова или байты читаются последовательно?

никакого выравнивания при чтении из файла нет.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Странный случай с std::ofstream
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]