Una volta ho letto un file per trovare il numero di righe che contiene, quindi lo riletto in modo da poter memorizzare alcuni dati di ogni riga in un array. C'è un modo migliore per leggere il file due volte rispetto alla chiusura e riaprirlo? Ecco cosa ho ottenuto, ma temo che sia inefficiente.Come leggere lo stesso file due volte di seguito
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;
}
STATO che stai usando C++, puoi usare un 'vector' invece di un array: http://www.cplusplus.com/reference/vector/ – Patashu
Perché non usare un' vector <> 'per memorizzare le informazioni mentre lo leggi dal file la prima volta: il vettore verrà ridimensionato automaticamente in quanto ha bisogno di più memoria. –
Dai un'occhiata [qui] (http://en.cppreference.com/w/cpp/io/basic_ostream/seekp). Probabilmente [qui] (http://en.cppreference.com/w/cpp/io/basic_istream/seekg) in realtà. – ChiefTwoPencils