1) У меня есть файл, содержимое которого отражается через контейнер векторного типа.
2) Содержимое файла проверяется (на наличие изменений) каждые 5секунд или около того.
3) Любые изменения, внесенные в файл, приводят к обновлению вектора, что позволяет сохранить зеркало.
4) Содержание вектора отображается на экране в режиме реального времени.
Эта проблема должна возникать много, но я не нашел удовлетворительного ответа.Возможно, ответ на этот вопрос окажется неудовлетворительным, оба не являются взаимоисключающими, но давайте посмотрим ...
Возможные решения:
Использование только базового C ++ и STL.
1) Длина данных файла или позиция последнего чтения.
После каждого чтения сохраняйте последнюю позицию чтения.Любые новые чтения начинаются с последней позиции чтения.
Минусы:
Любые изменения в существующих данных файла останутся незамеченными.
2) Проверка хэша.
После каждого чтениясохраните хэш каждой строки файла, который можно использовать позже для проверки / чтения данных нового файла.
Pro:
Любые изменения содержимого файла отражаются в векторе.
Con:
Каждая строка файла была прочитана, хеширована и сохранена .... дважды!
Издержки по мере увеличения размера файла.
3) Нет проверок.
Не проверяйте ничего, просто прочитайте весь файл и перезаписывайте вектор каждый раз, независимо от изменений содержимого файла.
Pro:
Любые изменения содержимого файла будут отражены в векторе.
Con:
?