Ich lese einmal eine Datei durch, um die Anzahl der Zeilen zu finden, die sie enthält, und lese sie erneut durch, damit ich einige Daten jeder Zeile in einem Array speichern kann. Gibt es eine bessere Möglichkeit, die Datei zweimal durchzulesen, als sie zu schließen und wieder zu öffnen? Hier ist, was ich bekam, aber ich fürchte, es ist ineffizient.Wie man dieselbe Datei zweimal hintereinander liest
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;
}
Wenn Sie C++ verwenden, können Sie anstelle eines Arrays einen 'Vektor' verwenden: http://www.cplusplus.com/reference/vector/ – Patashu
Warum verwenden Sie nicht' vector <> ', um die Informationen zu speichern Wenn Sie das erste Mal aus der Datei lesen, ändert sich der Vektor automatisch, da er mehr Speicher benötigt. –
Werfen Sie einen Blick [hier] (http://en.cppreference.com/w/cpp/io/basic_ostream/seekp). Wahrscheinlich [hier] (http://en.cppreference.com/w/cpp/io/basic_istream/seekg) eigentlich. – ChiefTwoPencils