| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Функция getline() |
| Автор: WWWind 22.11.2002, 08:39 |
| Читаю данные из файла с помощью функции getline(); std::string buffer; std::getline(infile,buffer,'\n'); Сперва, конечно, позиционирую на начало файла std::string::size_type pos=0; infile.seekg(pos,std::ios::beg); Когда дохожу до конца файла и снова ставлю на первую позицию, то не могу ничего прочитать из файла. Делаю getline(...), а buffer пуст. В чем может быть проблема? заранее спасибо) |
| Автор: Alamo 29.11.2002, 16:39 |
| было что то похожее давно, а выкручивался тогда просто - заново открывал файл на чтение, правда в файл ничего не писал, так что это было не критично |
| Автор: Step 30.11.2002, 03:41 |
| Попробуй прочитать дважды после позиционирования, бываю такие глюки, на второй раз буфер должен быть заполненный. |
| Автор: DrMasik 19.12.2002, 07:36 |
| Это не глюк! Все правильно! Ты попробуй прочитать первые 3 символа, а потом 1-й - может дальше сам догадаешся... |
| Автор: Step 19.12.2002, 18:30 | ||
может объяснишь, а то так с ходу не пойму, что то, или ты хочеш сказать что при достижении конца файла, и позиционировании его на начало, должна пройти еще какаято инициализация. |
| Автор: DrMasik 21.12.2002, 08:13 |
| Какого типа у тя infile ? |
| Автор: comcon1 24.7.2005, 10:59 |
| Я поднял эту тему из архива, поскольку на вопрос так и не ответили. Я столкнулся с абсолютно тем же. Файл был мною открыт как std::ifstream, что наверное и имел ввиду DrMasik. После этого начали проходить позиционирования (функция tellg() стала возвращать не -1). Но getline() с новой позиции все равно не проходит. Посмотрите еще раз тему и добейте плз.. Добавлено @ 11:03 Точнее я добью ее сам: после позиционирования infile.seekg() необходимо очистить флаги. infile.clear(). Тогда getline() проходит. Значит еще раз: 1. Определить infile как std::ifstream.. 2. Очистить флаги после позиционирования.. [теперь все, вроде] |