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

Как зафиксировать позицию в файле, а потом продолжить с неё считывание - C++

Восстановить пароль Регистрация
 
Roland Discane
 Аватар для Roland Discane
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 45
26.03.2014, 02:29     Как зафиксировать позицию в файле, а потом продолжить с неё считывание #1
Всем доброй ночи (или доброго утра). Возник вопрос о том, как зафиксировать позицию в файле, а потом продолжить с неё читать. Набросал код, но он не прёт. Помогите пожалуйста разобраться.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int main()
{
    int pos = 0;
    int i = 0;
    std::ifstream fileRead("F://original.txt");
    while (fileRead.eof()) {
        i = 0;
        fileRead.seekg(pos);
        while (i < 4) {
            fileRead.get();
            std::cout << "we";
            i++;
        }
        pos = fileRead.tellg();
        std::cout << "Reading " << pos << " positions";
    }
    fileRead.close();
    system("PAUSE");
    return 0;
}
Добавлено через 7 минут
А, у меня тут косяк
C++
1
while (fileRead.eof())
надо так
C++
1
while (!fileRead.eof())
Лол
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2014, 02:29     Как зафиксировать позицию в файле, а потом продолжить с неё считывание
Посмотрите здесь:

C++ Как продолжить?
C++ Запись и считывание с позиции в файле!
C++ Поиск, считывание и замена символов в файле [C++]
C++ Задача : сохранить несколько чисел в файле и потом их прочитать
Файлы. Как установить позицию в файле? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.03.2014, 02:39     Как зафиксировать позицию в файле, а потом продолжить с неё считывание #2
Цитата Сообщение от Roland Discane Посмотреть сообщение
Возник вопрос о том, как зафиксировать позицию в файле, а потом продолжить с неё читать.
Я так понял, что зафиксировать получилось (т.е. вывести на консоль позицию файлового курсора), но особого смылса в использовании, в данном коде, не вижу. Что с фиксацией, что без, будет одинаково работать.
Roland Discane
 Аватар для Roland Discane
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 45
26.03.2014, 02:44  [ТС]     Как зафиксировать позицию в файле, а потом продолжить с неё считывание #3
Немного переделал. Теперь в файл нужно дописывать. Почему-то пишет только последние значения, а до этого много пробелов.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
int main()
{
    int pos = 0;
    int posw = 0;
    int i = 0;
    std::ifstream fileRead("F://original.txt");
    while (!fileRead.eof()) {
        i = 0;
        fileRead.seekg(pos);
        while (i < 4) {
            fileRead.get();
            i++;
        }
        pos = fileRead.tellg();
        std::ofstream fileWrite("F://decipher3.txt");
        
            i = 0;
            fileWrite.seekp(posw);
            while (i < 4) {
                fileWrite << i;
                i++;
            
            posw = fileWrite.tellp();
            std::cout << "Write!" << std::endl;
        }
        fileWrite.close();
        std::cout << "Reading " << pos << " positions" << std::endl;
    }
    fileRead.close();
 
    system("PAUSE");
    return 0;
}
Добавлено через 30 секунд
alsav22, Это чисто для тренировки, учусь фиксировать на простом. Сейчас немного изменил и вот тут возникла проблема с заполнением. В файл почему-то записываются пробелы.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.03.2014, 03:01     Как зафиксировать позицию в файле, а потом продолжить с неё считывание #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ

Не по теме:

Цитата Сообщение от Roland Discane Посмотреть сообщение
Это чисто для тренировки, учусь фиксировать на простом.
Учиться на бессмысленном не стоит.



Добавлено через 5 минут
Цитата Сообщение от Roland Discane Посмотреть сообщение
В файл почему-то записываются пробелы.
Файл, в цикле, постоянно открывается для записи, при этом все данные в нём стираются, а запись начинается не с начала, а с сохранённой позиции.

Добавлено через 3 минуты
Дозапись можно делать без всякого сохранения позиций, открывая файл для дозаписи:
C++
1
std::ofstream fileWrite("F://decipher3.txt", std::ios::app);
Roland Discane
 Аватар для Roland Discane
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 45
26.03.2014, 03:06  [ТС]     Как зафиксировать позицию в файле, а потом продолжить с неё считывание #5
alsav22, Спасибо огромное, это как раз то, что нужно!)
Yandex
Объявления
26.03.2014, 03:06     Как зафиксировать позицию в файле, а потом продолжить с неё считывание
Ответ Создать тему
Опции темы

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