![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 11.02.2009
Сообщений: 4
|
![]()
Всем привет
![]() ![]() Вот функции: 1) inFile.good() -( как я понимаю счётчик конца файла? ) 2)inFile.seekg( Position ); - ( как я понимаю перемещает каретку на нужную позицию в файле ? ) 3) char Ch; inFile >> Ch; - ( как я понимаю считывает 1 байт из файла в переменную типа Char ?) 4) inFile.tellg() - ( возвращает позицию каретки в файле? ) 5) inFile.ignore(1); - тут даже предположений нет - хз что она делает ((( А вот код всей функции : Код:
Последний раз редактировалось MaTBeu; 23.02.2009 в 19:00. |
![]() |
![]() |
![]() |
#2 |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
![]()
Первые 2, 3 и 4 пункты правильно вы определили.
Пятый пункт - это пропуск определенного количества символов относительно текущей позиции в файле. Первый пункт - это определение состояния потока для установки флагов. Флаги бывают нескольких типов ios::badbit, ios::goodbit, ios::failbit и ios::eofbit. Флаги показывают состояние потока если goodbit - значит поток в норме. badbit - в потоке ошибки. failbit - приблизительно тоже самое что и badbit eofbit - конец потока. |
![]() |
![]() |
![]() |
#3 |
Регистрация: 11.02.2009
Сообщений: 4
|
![]()
inFile.ignore(1); - т.е. (простите пож за откровенную тупость(= ) в данном случае это переход на 1 байт вперед в файле?
Тогда возникает вопрос: Почему нельзя написать что то типа inFile.seekg( inFile.tellg() + 1 ); В чем же тогда получится отличие? З.Ы. В коде получается что используют как inFile.seekg( inFile.tellg() + 1 ); так и inFile.ignore(1); . З.Ы.Ы. Еще раз простите за глупые вопросы ![]() |
![]() |
![]() |
![]() |
#4 |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
![]()
Нет, это не перемещение указателя. Эта функция указывает сколько байтов необходимо пропустить при следующем чтении. Тоесть вы пиешете inFile.ignore(1);, а потом читаете из файла, то считается не тот байт, на котором указатель файла, а тот, что за ним.
|
![]() |
![]() |
![]() |
#5 |
Регистрация: 11.02.2009
Сообщений: 4
|
![]()
Мда... мне начинает казаться что я безнадёжен
![]() Из вашего ответа я понял что inFile.ignore(1); при следующем чтении из файла (float a; inFile.read((char *)&a, sizeof(float) ); ) делает так что считывается данные не с текущей позиции указателя, а с позиции = (позиция указателя - 1 ). Я правильно вас понял? Если не трудно могли бы вы обьяснить зачем эту функцию вообще всунули в этот цикл: (И можно ли её заменить как нить на комбинацию этих функций: inFile.seekg( Значение ); inFile.tellg() ) Код:
![]() P.S. у нас дан бинарный файл, он состоит из блоков содержащий информацию каждый блок имеет указатель на его начало (т.е. позиция в байтах). В этом цикле мы считываем информацию из блока пока инфа считывается без ошибок и пока не достигнут конец первого блока и начало второго. Последний раз редактировалось Maksitron; 23.02.2009 в 20:28. |
![]() |
![]() |
![]() |
#6 |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
![]()
Ну наверное в конце каждого блока есть какой-то символ (или байт), обозначающий конец блока. Тоесть мы считали нужную нам информацию, а после чтения этого блока, нам нужно начать читать следующий, но у нас в текущем блоке лежит еще символ конца блока.
Поэтому при следующем чтении информация будет формально считываться вместе с тем символом, но благодаря функции ignore(1) записываться будет со следующего символа после этого. В принципе вы можете просто переместить указатель на 1 байт вперед и все. |
![]() |
![]() |
![]() |
#7 |
Регистрация: 11.02.2009
Сообщений: 4
|
![]()
окей - спасибо огромное!
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Посимвольное чтение нетипизированных файлов | Wi1D | Помощь студентам | 4 | 03.10.2010 16:13 |
Помогите отсортировать массив методом бинарных вставок | zhorzh2407 | Помощь студентам | 1 | 19.11.2008 17:19 |
Чтение файлов с диска | Wolf-alone | Общие вопросы C/C++ | 1 | 17.09.2008 10:05 |
Нужна помощь: выбор файлов исходя из имени файлов | Antik163RUS | Помощь студентам | 4 | 19.06.2008 21:20 |
Чтение MP3 файлов из папки | PAVEL315 | Общие вопросы Delphi | 1 | 03.03.2007 13:33 |