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

Считывание посимвольно файл - C++

Восстановить пароль Регистрация
 
oltar19
0 / 0 / 0
Регистрация: 21.02.2013
Сообщений: 47
01.06.2014, 13:59     Считывание посимвольно файл #1
Нужно считать посимвольно файл, но когда начал реализовать, то запутался, мне в цикле надо иметь доступ к нынешнему символу, и доступ к следующему символу. И так до конца файла, к примеру:

a4=33 - он должен считывать так:

первая итерация:

a- нынешний символ | 4 -следующий
4 - нынешний символ | = - следующий
и т.д

вот моя реализация

C++
1
2
3
4
5
6
while (!fin.eof()) {
        char a; 
               fin.get(ch);
        fin.get(a);
        cout << " iter:" << ch <<"|"<<a<< endl;
}
НО, она выдает такое сообщение:
iter: a | 4
iter: = | 5
iter: = | 5

Почему 2 раза последняя строка, я не понял. Текст файла таков : a4=55
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2014, 13:59     Считывание посимвольно файл
Посмотрите здесь:

C++ Считывание и запись в файл
C++ считывание и запись в файл
C++ Считывание числа из текстовика посимвольно
C++ Считывание и запись в файл
C++ Считывание в файл
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.06.2014, 15:52     Считывание посимвольно файл #2
Цитата Сообщение от oltar19 Посмотреть сообщение
Почему 2 раза последняя строка, я не понял.
C++
1
2
3
4
5
6
7
8
9
10
11
while (true) 
{
        char a; 
        fin.get(ch);
        if (fin.eof())
             break;
        fin.get(a);
        if (fin.eof())
             break;
        cout << " iter:" << ch <<"|"<<a<< endl;
}
Добавлено через 2 минуты
C++
1
2
3
4
5
char a, ch;
while (fin.get(ch) && fin.get(a)) 
{
        cout << " iter:" << ch <<"|"<<a<< endl;
}
oltar19
0 / 0 / 0
Регистрация: 21.02.2013
Сообщений: 47
01.06.2014, 16:05  [ТС]     Считывание посимвольно файл #3
Нет, в данном случае он перепрыгивает за одну итерацию на две позиции, т.е выводит так:

iter: a | 3
iter = | 5

а должен:

iter: a | 3
iter: 3 | =
iter: = | 5

Может как то через си-шные указатели можно реализовать, подчеркну, что мне важно в цикле иметь доступ к элементу настоящему и следующему элементу, но приэтом цикл идет по каждому символу.

Что касается сишных указателей, я имел ввиду, типо того
FILE **fin
*fin - это текущий символ
*fin++ - а это указатель на следующий
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.06.2014, 16:22     Считывание посимвольно файл #4
Цитата Сообщение от oltar19 Посмотреть сообщение
Нет, в данном случае он перепрыгивает за одну итерацию на две позиции,
Я ответил на это:
Цитата Сообщение от oltar19 Посмотреть сообщение
Почему 2 раза последняя строка, я не понял.
Добавлено через 5 минут
C++
1
2
3
4
5
6
7
char ch;
while (fin.get(ch)) 
{
        cout << " iter:" << ch <<"|"
        if (fin.peek() != EOF) 
            cout << fin.peek() << endl;
}
oltar19
0 / 0 / 0
Регистрация: 21.02.2013
Сообщений: 47
01.06.2014, 16:28  [ТС]     Считывание посимвольно файл #5
Ясно, а про организацию потока черзе си, с помощью указателей, можно реализовать или нет?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.06.2014, 16:29     Считывание посимвольно файл #6
Цитата Сообщение от oltar19 Посмотреть сообщение
а про организацию потока черзе си, с помощью указателей, можно реализовать или нет?
Тут форум С++, а не Си.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,061
01.06.2014, 16:33     Считывание посимвольно файл #7
Цитата Сообщение от oltar19 Посмотреть сообщение
что мне важно в цикле иметь доступ к элементу настоящему и следующему элементу,
Ты умеешь заглядывать в будущее?
следующий элемент еще не считан, программа про него ничего не знает
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2014, 16:34     Считывание посимвольно файл
Еще ссылки по теме:

C++ Считать файл в переменную типа char, и работать посимвольно
Считать посимвольно файл стандартными средствами и итераторами C++
C++ Считывание String посимвольно либо Char in Switch

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

Или воспользуйтесь поиском по форуму:
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1868 / 1664 / 580
Регистрация: 14.05.2014
Сообщений: 4,777
Записей в блоге: 1
Завершенные тесты: 5
01.06.2014, 16:34     Считывание посимвольно файл #8
Цитата Сообщение от oltar19 Посмотреть сообщение
Почему 2 раза последняя строка, я не понял.
Может быть из-за того, что файл заканчивается переводом строки.
Yandex
Объявления
01.06.2014, 16:34     Считывание посимвольно файл
Ответ Создать тему
Опции темы

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