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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Програма с .тхт файлом http://www.cyberforum.ru/cpp-beginners/thread33219.html
вот код #include <windows.h> #include <stdio.h> #include <conio.h> FILE *f; typedef struct tagINFO {
C++ Задача о совпадении дней рождения Пожалуйста, кто-нибудь помагите решить задачу, очень надо для дипломной работы! Заранее всех благодарю за помощь!!!:) Задача состоит в том, что бы найти вероятность совпадения хотя бы 2-х дней рождений в группе студентов из 25 человек. Модель задачи заключается в следующем необходимо присвоить какому-нибудь счетчику 0, для дальнейшего сохранения в неё результатов опыта. Вызывать функцию для... http://www.cyberforum.ru/cpp-beginners/thread33203.html
C++ Разбить N на более простые числа, в сумме дающие это N
Нашел я как-то в одной книге задачу. До сих пор бьюсь над ее решением. Может кто подскажет программу для ее решения (на Visual C++,либо на VBA либо на Паскале))). Вот текст задачи (на первый взгляд, ничего схожего с программированием): Парламент состоит из N делегатов. Делегаты должны разделиться на группы (фракции); кол-во депутатов в каждой группе должно отличаться от кол-ва депутатов в...
С Pascal(я) на C++ C++
в С++ сосем "профан", да и паскаль толком не знаю :) задачи частенько делаю с помощью вашего форума :) Суть. Имеются две задачи на Паскале, которые прошу Вас переделать под С++ //Определить сумму элементов массива N кратных трём Program Project; uses crt; Var
C++ Разработка программ из многофайловой структурой http://www.cyberforum.ru/cpp-beginners/thread32701.html
Очень прошу помощи в следующем задании (сам сделать не могу, а лабораторную сдавать надо. P.S: препод внимания на эту тему вообще не уделял, так что помогите кто соображает на С++): Составить проект для многофайловой структуры программы. Разработать заглавных файл содержащий глобальные данные и объявления внешних функций. Разработать вспомогательный файл содержащий определение внешних...
C++ Работа с объектами классов Всем здраствуйте. Помогите если вам не так сложно :) Вот сейчас я поясню, то что не могу сделать: В соответствии с написанной программой разработать алгоритм работы с объектами базовых и производных классов с использованием указателей на базовые и производные классы Вообщем, помогите сделать эту программу с использованием виртуальных указателей для работи с объектами классов Эта... подробнее

Показать сообщение отдельно
artyom.stv
Сообщений: n/a
09.05.2009, 03:41     чтение из файла, в котором на перенос строки отводится один символ
Здравствуйте.

При обработке файлов результатов неких измерений наткнулся на такую проблему:
На перенос строки отводится один байт, как в *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 будет выдавать правильное значение.

Тему можно закрыть.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 01:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru