Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перемещение при чтении файла, Seekg, ifstream, seekp, ofstream 
:(
    Опции темы
zaytsewa
Дата 16.12.2011, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 9.4.2009

Репутация: нет
Всего: нет



Всем привет!

Есть необходимость переходить к началу файла после поиска в нём, чаще всего поиск заканчивается неудачей, т.е. 
мы проходим по всем строкам файла и получаем input.eof() == true.

Код


std::ifstream& input;
std::string str;

    while ( !input.eof() )
    {
        getline( input, str );
       ...
    }

 input.seekg( 0,std::ios::beg );

    while ( !input.eof() )
    {
        getline( input, str );
       ...
    }




вообщем во второй цикл не входит, тк seekg не отрабатывает....

в чём тут дело? заранее спасибо).
PM MAIL   Вверх
xvr
Дата 16.12.2011, 10:20 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(zaytsewa @  16.12.2011,  10:05 Найти цитируемый пост)
в чём тут дело?

Дело в том, что eof() - это по классификации stream'ов уже ошибка. Т.е. stream переходит в состояние ошибки, после чего все операции на нем (в том числе и seekg) игнорируются.
Для снятия этого состояния нужно позвать метод clear()

PM MAIL   Вверх
boostcoder
Дата 16.12.2011, 10:28 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



Цитата(xvr @  16.12.2011,  10:20 Найти цитируемый пост)
stream переходит в состояние ошибки, после чего все операции на нем (в том числе и seekg) игнорируются.
Для снятия этого состояния нужно позвать метод clear()

простыми словами: сначала вызови clear(), и только потом seekg()

PM WWW   Вверх
zaytsewa
Дата 16.12.2011, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 9.4.2009

Репутация: нет
Всего: нет



спасибо!!!
PM MAIL   Вверх
boostcoder
Дата 16.12.2011, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



zaytsewa, тему закрой.
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0442 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.