Witam, obecnie dysponuję pewnym kodem źródłowym, który będzie w waszej opinii zapewne błędny. Zgodzę się z wami w tej kwestii z tym, że tworzę ten temat jedynie w celu znalezienia odpowiedzi typu "Dlaczego tak jest?".
Kod C++:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
ifstream plik("./plik.txt");
if(plik)
{
plik.seekg(10, ios::beg);
// Udało się otworzyć plik, a więc można rozpocząć odczytywanie
string linia; // Zmienna do przechowywania odczytanych wierszy tekstu
while(getline(plik, linia)) // Jeśli jeszcze nie nastąpił koniec pliku, czytamy dalej
{
cout << linia << endl; // Wyświetlamy odczytany tekst w konsoli
// Można też zrobić z nim coś innego
}
int pozycja = plik.tellg(); // Sprawdzamy pozycję
cout << "Jesteśmy na znaku nr " << pozycja << " w pliku." << endl;
}
else
{
cout << "BŁĄD: nie można otworzyć pliku do odczytu." << endl;
}
return 0;
}
O to moje notatki:
- Instrukcja przesuwa kursor na 10 literę (numeracja od 0).
- Rezerwacja pamięci w komputerze dla łańcucha znaków.
- Rozpoczęcie wykonywania pętli, która:
- odczytywuje zdanie z pliku.
- zapisuje je w pamięci
- wyświetla na ekranie.
i wykonuje te cykle do końca tekstu zapisanego w pliku.
- Rezerwacja pamięci w komputerze, której zawartością jest bieżąca lokalizacja kursora wskazującego n-tą literę. (W programie to -1, dlaczego?)
- Wyświetlenie tej lokalizacji w konsoli.
I pytanie brzmi:
Dlaczego wskazywana jest pozycja (litera) równa -1? Czy to za sprawą pętli? Czy to przez nią kursor jest "wyrzucany" poza obszar jej działań? Ponieważ numeracja w komputerach zaczyna się od 0, więc rozumiem, że -1 to wskazywana litera przed literą o pozycji 0 od której zaczyna się pętla.
Wybaczcie, jeżeli moje myśli są niezbyt ładnie i poprawnie "ubrane" w słowa i jeśli już taki temat istniał. Bardzo ciekawi mnie to, czy są jakieś sposoby działania, o których nie wiem i które powodują u mnie zamieszanie?