C/C++ Ready | Программирование
Пишем вывод последних строк файла на C++!
Иногда нужно быстро посмотреть конец лога или временного файла. Сделаем маленькую функцию, которая хранит только последние N строк и не загружает весь файл в память.
Для этого удобно использовать std::deque. Он позволяет добавлять строки в конец и удалять самые старые строки из начала.
Сначала подключим нужные заголовки:
#include <deque>
#include <fstream>
#include <iostream>
#include <string>
Теперь открываем файл и готовим контейнер:
std::ifstream in(path);
std::deque<std::string> tail;
std::string line;
При чтении добавляем новую строку в конец:
while (std::getline(in, line)) {
tail.push_back(line);
}
Если строк стало больше лимита, удаляем самую старую:
if (tail.size() > limit) {
tail.pop_front();
}
В итоге печатаем то, что осталось в deque:
for (const auto& row : tail) {
std::cout << row << '\n';
}
Такой подход работает потоково. Даже если лог большой, в памяти одновременно лежит только нужное количество последних строк.
📣 C++ Ready | #практика
15 · 2.7K ·