c ++ цикл ifline getline () возвращает только последнюю строку текстового файла - PullRequest
0 голосов
/ 18 февраля 2019

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

Вот моя функция: (Мой параметр строки начинается с 0, поэтому 8 на самом деле является 9-й строкой)

string txtRW_readline(string FileName,int Line){
    ifstream fin;
    fin.open(FileName.c_str());

    string txtline;

    for(int i = 0; i <= Line ; i++){
        getline(fin,txtline);
        cout << "Reading line: " << i << endl;
        cout << "Result: " << txtline << endl << endl;
    }
    fin.close();
    cout << "Returning: " << txtline << endl;
    return txtline;
}

int main(){
    cout << txtRW_readline("input.txt",8);
    return 0;
}

Вот мой input.txt:

A1
B2
C3
D4
E5
F6
G7
H8
I9

Вот мой вывод: (когда cout << txtRW_readline ("input.txt", 8)) </p>

Reading line: 0
Result: A1

Reading line: 1
Result: B2

Reading line: 2
Result: C3

Reading line: 3
Result: D4

Reading line: 4
Result: E5

Reading line: 5
Result: F6

Reading line: 6
Result: G8

Reading line: 7
Result: H8

Reading line: 8
Result: I9

Returning: I9
I9  <-- This one returns a line

Вот мой вывод: (когда cout << txtRW_readline ("input.txt", 7)) </p>

Reading line: 0
Result: A1

Reading line: 1
Result: B2

Reading line: 2
Result: C3

Reading line: 3
Result: D4

Reading line: 4
Result: E5

Reading line: 5
Result: F6

Reading line: 6
Result: G8

Reading line: 7
Result: H8


Returning: H8
<-- This one returns nothing -->

Может кто-нибудь объяснить мне, почему это происходит и как я могу это исправить?

...