Przeczytałem jeden raz plik, aby znaleźć liczbę zawartych w nim wierszy, a następnie przeczytałem je ponownie, dzięki czemu mogę przechowywać niektóre dane z każdej linii w tablicy. Czy istnieje lepszy sposób na odczytanie pliku dwukrotnie niż zamknięcie i ponowne otwarcie? Oto, co mam, ale obawiam się, że jest to nieefektywne.Jak odczytać ten sam plik dwa razy z rzędu
int numOfMappings = 0;
ifstream settingsFile("settings.txt");
string setting;
while(getline(settingsFile, setting))
{
numOfMappings++;
}
char* mapping = new char[numOfMappings];
settingsFile.close();
cout << "numOfMappings: " << numOfMappings << endl;
settingsFile.open("settings.txt");
while(getline(settingsFile, setting))
{
cout << "line: " << setting << endl;
}
Ponieważ używasz C++, możesz użyć 'wektora' zamiast tablicy: http://www.cplusplus.com/reference/vector/ – Patashu
Dlaczego nie używać' wektora <> do przechowywania informacji gdy czytasz go z pliku za pierwszym razem - wektor automatycznie zmieni rozmiar, ponieważ potrzebuje więcej pamięci. –
Zobacz [tutaj] (http://pl.cppreference.com/w/cpp/io/basic_ostream/seekp). Prawdopodobnie w rzeczywistości [tutaj] (http://en.cppreference.com/w/cpp/io/basic_istream/seekg). – ChiefTwoPencils