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

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

Войти
Регистрация
Восстановить пароль
 
oltar19
0 / 0 / 0
Регистрация: 21.02.2013
Сообщений: 47
#1

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

01.06.2014, 13:59. Просмотров 427. Ответов 7
Метки нет (Все метки)

Нужно считать посимвольно файл, но когда начал реализовать, то запутался, мне в цикле надо иметь доступ к нынешнему символу, и доступ к следующему символу. И так до конца файла, к примеру:

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
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5413 / 4809 / 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
5413 / 4809 / 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
5413 / 4809 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.06.2014, 16:29     Считывание посимвольно файл #6
Цитата Сообщение от oltar19 Посмотреть сообщение
а про организацию потока черзе си, с помощью указателей, можно реализовать или нет?
Тут форум С++, а не Си.
ValeryS
Модератор
6478 / 4944 / 455
Регистрация: 14.02.2011
Сообщений: 16,386
01.06.2014, 16:33     Считывание посимвольно файл #7
Цитата Сообщение от oltar19 Посмотреть сообщение
что мне важно в цикле иметь доступ к элементу настоящему и следующему элементу,
Ты умеешь заглядывать в будущее?
следующий элемент еще не считан, программа про него ничего не знает
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2014, 16:34     Считывание посимвольно файл
Еще ссылки по теме:

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

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

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

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