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

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

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

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

01.06.2014, 13:59. Просмотров 490. Ответов 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
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2014, 13:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Считывание посимвольно файл (C++):

Считывание числа из текстовика посимвольно - C++
в текстовом файле забито число(например 1368), нужно посимвольно его подсчитать и вывести на экран. цикл написал: for...

Считывание String посимвольно либо Char in Switch - C++
Здравствуйте, суть такова: Нужно написать 3 числа (0-7), а дальше считать каждое число по отдельности и в зависимости от числа, выполнить...

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

Считать файл в переменную типа char, и работать посимвольно - C++
считать файл в переменную типа char, а дальше с ней нужно работать посимвольно, так вот, как написать while(пока это не последний символ...

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

Считывание в файл - C++
Всем привет. Сегодня столкнулся с проблемой. Программа делает 4 действия: рандомой забивает числа в файл,затем считывает их в...

7
alsav22
5421 / 4816 / 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;
}
0
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++ - а это указатель на следующий
0
alsav22
5421 / 4816 / 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;
}
0
oltar19
0 / 0 / 0
Регистрация: 21.02.2013
Сообщений: 47
01.06.2014, 16:28  [ТС] #5
Ясно, а про организацию потока черзе си, с помощью указателей, можно реализовать или нет?
0
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.06.2014, 16:29 #6
Цитата Сообщение от oltar19 Посмотреть сообщение
а про организацию потока черзе си, с помощью указателей, можно реализовать или нет?
Тут форум С++, а не Си.
0
ValeryS
Модератор
6651 / 5060 / 470
Регистрация: 14.02.2011
Сообщений: 16,919
01.06.2014, 16:33 #7
Цитата Сообщение от oltar19 Посмотреть сообщение
что мне важно в цикле иметь доступ к элементу настоящему и следующему элементу,
Ты умеешь заглядывать в будущее?
следующий элемент еще не считан, программа про него ничего не знает
0
Kerry_Jr
Модератор
Эксперт PHP
2201 / 1997 / 700
Регистрация: 14.05.2014
Сообщений: 5,856
Записей в блоге: 1
Завершенные тесты: 5
01.06.2014, 16:34 #8
Цитата Сообщение от oltar19 Посмотреть сообщение
Почему 2 раза последняя строка, я не понял.
Может быть из-за того, что файл заканчивается переводом строки.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2014, 16:34
Привет! Вот еще темы с ответами:

считывание и запись в файл - C++
вот написал программу на C++ builder в консоли, считывающую два числа и записывающую в файл их сумму. но она не работает, помогите советом....

Считывание строк в файл - C++
Здравствуйте,очень нужна помощь.Есть данный код,не могу понять как его переделать из посимвольного считывания в файл в строковое...

Построчное считывание в файл - C++
Все записывается в одну строку , как сделать так чтобы записывалось в отдельные строки? void enter_new() { cout &lt;&lt;...

Считывание и запись в файл - C++
решил задачу на с, го её нужно перевести на с++. у меня возникли проблемы с считыванием и записью в файл. помогите пожалуйста! Вот код на...


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

Или воспользуйтесь поиском по форуму:
8
Yandex
Объявления
01.06.2014, 16:34
Ответ Создать тему
Опции темы

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