CodeNet - все для программиста!CodeNet - 10 лет - мегавстреча!
Все для программиста!
  Статьи   Форум   Исходники   Каталог   Хостинг   IRC  
 Справочник функций

Ваш аккаунт

Логин:
Пароль:

Забыли пароль?
Регистрация

Почтовая рассылка



Подписчиков: 6553
(Из них RSS: 0)

Последний выпуск: 22.06.2010
Старый 27.12.2008, 09:27   #1
Artem_3A
Эксперт
 
Аватар для Artem_3A
 
Регистрация: 11.04.2008
Адрес: Красноярск
Сообщений: 703
Вес репутации: 14
Artem_3A is a jewel in the roughArtem_3A is a jewel in the roughArtem_3A is a jewel in the rough
Отправить сообщение для Artem_3A с помощью ICQ
По умолчанию Вопрос по файловым потокам в С++

Есть код.
Код:
#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();
В чем проблема я понять так и не могу... Может быть что то подскажите?
Аналогичный код, написанный на С, работает не вызывая нареканий.
__________________
[code] так оформляем код [/code]
<-- вместо "спасибо" добавляем положительные отзывы
- пользуемся поиском
- думаем головой

Лучше быть несчастным гением, чем счастливым идиотом! (с)

Последний раз редактировалось Artem_3A; 27.12.2008 в 09:39
Artem_3A вне форума   Ответить с цитированием
Реклама
Старый 27.12.2008, 11:01   #2
kot_
Пенсионер форума
 
Аватар для kot_
 
Регистрация: 20.01.2000
Адрес: Днепропетровск
Сообщений: 4,522
Вес репутации: 76
kot_ is a splendid one to beholdkot_ is a splendid one to beholdkot_ is a splendid one to beholdkot_ is a splendid one to beholdkot_ is a splendid one to beholdkot_ is a splendid one to beholdkot_ is a splendid one to beholdkot_ is a splendid one to behold
Отправить сообщение для kot_ с помощью ICQ
По умолчанию

Цитата:
Сообщение от Artem_3A Посмотреть сообщение
Есть код.
Код:
        in.seekg(ios::end);
В результате выполнения программы мы получаем выходной файл 222.jpg размеров в 2 байта. Собственно, вся проблема заключается в том, что в результате этого кода мы получаем неверный размер файла.
Код:
int iSize = (int)in.tellg();
В чем проблема я понять так и не могу... Может быть что то подскажите?
Аналогичный код, написанный на С, работает не вызывая нареканий.
вроде должно быть так
Код:
in.seekg(0,ios::end);
т.е. должна или быть задана конкретная позиция в файловом потоке -
например -
Код:
in.seekg(1000);
- или позиция относительно начала/конца. Данным кодом мы устанавливаем позицию в конец файла
__________________
Вы получите ответ, если заслужите его, задавая существенный, интересный и наводящий на размышления вопрос — вопрос, неявно дающий сообществу новый опыт, а не просто пассивно требующий от других поделиться знаниями.(с)We
Компьютерные услуги в Днепропетровске
Спецодежда в Днепропетровске. Опт и розница.
kot_ вне форума   Ответить с цитированием
Старый 27.12.2008, 12:16   #3
kot_
Пенсионер форума
 
Аватар для kot_
 
Регистрация: 20.01.2000
Адрес: Днепропетровск
Сообщений: 4,522
Вес репутации: 76
kot_ is a splendid one to beholdkot_ is a splendid one to beholdkot_ is a splendid one to beholdkot_ is a splendid one to beholdkot_ is a splendid one to beholdkot_ is a splendid one to beholdkot_ is a splendid one to beholdkot_ is a splendid one to behold
Отправить сообщение для kot_ с помощью ICQ
По умолчанию

Немного более подробно вопрос освещен в моем блоге
__________________
Вы получите ответ, если заслужите его, задавая существенный, интересный и наводящий на размышления вопрос — вопрос, неявно дающий сообществу новый опыт, а не просто пассивно требующий от других поделиться знаниями.(с)We
Компьютерные услуги в Днепропетровске
Спецодежда в Днепропетровске. Опт и розница.
kot_ вне форума   Ответить с цитированием
Старый 27.12.2008, 14:12   #4
Artem_3A
Эксперт
 
Аватар для Artem_3A
 
Регистрация: 11.04.2008
Адрес: Красноярск
Сообщений: 703
Вес репутации: 14
Artem_3A is a jewel in the roughArtem_3A is a jewel in the roughArtem_3A is a jewel in the rough
Отправить сообщение для Artem_3A с помощью ICQ
По умолчанию

спс, теперь все работает как часы!
__________________
[code] так оформляем код [/code]
<-- вместо "спасибо" добавляем положительные отзывы
- пользуемся поиском
- думаем головой

Лучше быть несчастным гением, чем счастливым идиотом! (с)
Artem_3A вне форума   Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
требуется информация по виде-потокам. Alucard90 Microsoft .NET Framework 0 02.04.2008 12:10
Вопрос по "CGI на C" и вопрос по файлам d4n C/C++/C# - общие вопросы 6 14.09.2007 23:59
вопрос про wap+вопрос по константам Mr.Hacker Web программирование 6 03.03.2007 11:56
Вопрос...просто вопрос не по теме.Как ответить на Форуме? Bumer Delphi & Kylix 7 20.01.2005 18:07
Как присвоить потокам id?(чтоб в лог писались по очереди) zitrol Borland C++ Builder 3 06.11.2002 17:32


Часовой пояс GMT +4, время: 11:51.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd. Перевод: zCarot
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог