Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
artyom.stv
Сообщений: n/a
#1

чтение из файла, в котором на перенос строки отводится один символ - C++

09.05.2009, 03:41. Просмотров 1543. Ответов 0
Метки нет (Все метки)

Здравствуйте.

При обработке файлов результатов неких измерений наткнулся на такую проблему:
На перенос строки отводится один байт, как в *nix-системах, а не два байта, - как в маздае. пишу я как раз под маздаем.
Использую ifstream для чтения из файла. Есть причины, по которым использовать С-шный доступ к файлам мне не выгодно.
Вызов tellg для потока выдаёт значение (положение в файле), которое было бы, если бы в файле для переноса использовалось бы два байта.

Т.е. когда на 51 строке реальная позиция в файле, например 900, tellg выдаёт 950. При переходе
Код
fin.seekg(fin.tellg(), ios::beg)
позиция чтения не должна меняться, а она меняется. То же самое и при вызове
Код
fin.seekg(shft, ios::cur)
при shft неравном нулю, - позиция смещается не на shft, а на shft+50, например.

Подскажите, пожалуйста, если кто-нибудь знает, как сказать ifstream-у, что в переносе строки нужно учитывать один байт, как оно и есть на самом деле для конкретного файла.

Добавлено через 13 часов 55 минут 25 секунд
Спасибо всем, кто смотрел и пытался решить проблему.

Как вариант это решается с помощью istreambuf_iterator:
Код
ifstream fin( fileName );
ifstreambuf_iterator it( fin ), end;
......
find( it, end, '\n' );
fin.seekg( 1, ios::cur );
Наверняка есть и более вразумительные способы, но этого вполне хватет для большинства случаев.
Если таким образом проходить ВСЕ символы переноса, не используя getline, то tellg будет выдавать правильное значение.

Тему можно закрыть.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.05.2009, 03:41     чтение из файла, в котором на перенос строки отводится один символ
Посмотрите здесь:

Найти слово, один и тот же символ в котором встречается максимальное число раз (в рамках всей строки). - C++
Помогите пожалуйста! Строка состоит из слов, разделенных одним или несколькими пробелами.(может начинаться несколькими пробелами и...

Найти слово, один и тот же символ в котором встречается максимальное число раз (в рамках всей строки) - C++
состоит из слов, разделенных одним или несколькими пробелами. Найти слово, один и тот же символ в котором встречается максимальное число...

Найти слово, один и тот же символ в котором встречается максимальное число раз - C++
длина входной строки не превосходит 300 символов, она вводится с консоли. Вам необходимо вывести на консоль либо преобразованную строку,...

Как, прочитав из файла один символ, выявить факт окончания файла - C++
Подскажите пожалуйста как, прочитав из файла один символ, выявить факт окончания файла

Вывод из файла слова, в котором заданный символ встречается больше всех остальных - C++
Есть файл, в котором написаны произвольные слова (или же просто набор букв). Пользователь вводит с клавиатуры символ, после чего...

strupr (сделать заглавным один символ строки) - C++
Вот эта ф-ия класса cstring делает заглавными всю строку. а мне нужно сделать заглявным один символ строки. помогите

Заменить все символы строки на один заданный символ - C++
например нам дана строка "aabbaa" как сделать так что бы в результате получился только один символ '*'

Чтение и запись из файла в файл - символ в файле повторяется дважды - C++
При компиляции кода последний символ в файле повторяется дважды, что происходит? Как это исправить?? Помогите! #include <iostream> ...

Разработка программного модуля вставки строки заданной длины, содержащую хотя бы один перенос, в текстовый файл - C++
Желательно в программе Visual Studio c++. Тема:Разработка программного модуля вставки строки заданной длины, содержащую хотя бы один...

Чтение строки и файла - C++
Программа для чтения строки и записи файла, пожалуйста помоите модуль сдать нужно


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru