Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ структуры подскажите где ошибки http://www.cyberforum.ru/cpp-beginners/thread33257.html
Ребята посмотрите код Пока сделал (думал что сделал) первых 4 пункта но начинает выдавать ошибки посмотрите что за ошибки Предметная область - бухгалтерия предприятия. Решаемые задачи - учет...
C++ компилятор пропускает строчки с инициализацией здравствуйте! Копмилятор пропускает строчки с инициализацией переменных. При попытке поставить маркер, переносит этот маркер на строчку ниже. Переменные при этом инициализируются какими-то левыми... http://www.cyberforum.ru/cpp-beginners/thread33255.html
C++ Телефонная книга. нужна помощь в настроике настроить поиск.
#include <string.h> #include <stdio.h> #include <windows.h> void funkcia1() { int i,j=1; for(i=0;i<90;i++) printf("%c",j);
C++ работа с указателями
небольшая проблемка, никак не могу разобраться с указателями. Я так понял что создавая массив лучше если сразу сдалешь на него указатель и будешь работать с ним, нежели с самим массивом, тип так...
C++ поиск маршрута. Задача на С#. http://www.cyberforum.ru/cpp-beginners/thread33222.html
Задача следующая: Некая географическая карта местности задана квадратной сеткой определенного масштаба. В узлах сетки известна высота над уровнем моря. Между соседними узлами высота меняется плавно....
C++ Програма с .тхт файлом вот код #include <windows.h> #include <stdio.h> #include <conio.h> FILE *f; typedef struct tagINFO { подробнее

Показать сообщение отдельно
artyom.stv
0 / 0 / 0
Регистрация: 05.05.2009
Сообщений: 1

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

09.05.2009, 03:41. Просмотров 1576. Ответов 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 будет выдавать правильное значение.

Тему можно закрыть.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru