Чтение определенных строк из файла в C ++ - PullRequest
0 голосов
/ 12 мая 2018

Следующий код предназначен для цикла по последним десяти строкам файла, который я ранее открыл.Я думаю, что функция seekg относится к двоичным файлам и проходит только через отдельные байты данных, так что это может быть моей проблемой здесь.

    //Set cursor to 10 places before end
    //Read lines of input
    input.seekg(10L, ios::end);

    getline(input, a);

    while (input) {
        cout << a << endl;
        getline(input, a);
    }

    input.close();
    int b;
    cin >> b;
    return 0;
}

Другой метод, который я задумал сделать, - это просто подсчитать, сколько раз файл был зациклен вначале, взять его и вычесть десять, затем пересчитать в файле это число раз, затем вывестиСледующие десять, но это кажется обширным для того, что я хочу сделать.

Есть ли что-то вроде seekg, которое перейдет к определенной строке в текстовом файле?Или я должен использовать метод, который я предложил выше?

РЕДАКТИРОВАТЬ: я ответил на мой собственный вопрос: цикл был похож на еще 6 строк кода.

Ответы [ 2 ]

0 голосов
/ 12 мая 2018

Если вам не важен порядок последних 10 строк, вы можете сделать это:

#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <cmath>

int main() {

    std::ifstream file("test.txt");
    std::vector<std::string> lines(10);

    for ( int i = 0; getline(file, lines[i % 10]); ++i );

    return 0;
}
0 голосов
/ 12 мая 2018

Поиск символа новой строки в обратном направлении 10 раз или до тех пор, пока курсор файла не станет меньше или равен нулю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...