Nie można od razu odczytać linii 3. Musisz zaczynać od początku, linijka po linijce. Tworzysz pętlę, która wykona się 3 razy i za każdym razem wczyta kolejną linię, zastępując poprzednią. Przykład:
ifstream plik( "abc.txt" );
string linia;
for( int i = 0; i < 3; i++ )
{
getline( plik, linia );
}
cout << "Linia trzecia: " << linia;
Przy większych programach, nie zapomnij w pętli umieścić dodatkowego warunku: plik.eof(). Robisz to w taki sposób:
ifstream plik( "abc.txt" );
string linia;
while( !plik.eof() )
{
getline( plik, linia );
cout << "Wczytano: " << linia << endl;
}
Program wypisze wszystkie linie i zakończy wczytywanie, gdy napotka koniec pliku (end-of-file). To jest bardzo ważne, bo inaczej program może wypluć błąd ;-)
PS. W swoich przykładach użyłem zapisu: ifstream plik( "abc.txt" );
Mogłeś się z taką formą zapisu nie spotkać. Alternatywą jest napisanie:
fstream plik;
plik.open( "abc.txt", ios::in );