Ich habe eine Situation, wo ich die ersten 64 Zeilen einer Datei durchlaufen und speichern Sie jede Zeile in einer Zeichenfolge. Der Rest der Datei ist unbekannt. Es kann eine einzelne Zeile oder viele sein. Ich weiß, dass es 64 Zeilen am Anfang der Datei geben wird, aber ich weiß ihre Größe nicht.Speichern von Datei Daten von der aktuellen Position bis zum Ende der Datei mit fstream
Wie kann ich den gesamten Rest der Datei in einer Zeichenfolge speichern?
Dies ist, was ich derzeit haben:
std::ifstream signatureFile(fileName);
for (int i = 0; i < 64; ++i) {
std::string tempString;
//read the line
signatureFile >> tempString;
//do other processing of string
}
std::string restOfFile;
//save the rest of the file into restOfFile
Dank der Antworten das ist, wie ich es bekam Arbeit:
std::ifstream signatureFile(fileName);
for (int i = 0; i < 64; ++i) {
std::string tempString;
//read the line
//using getline prevents extra line break when reading the rest of file
std::getline(signatureFile, tempString);
//do other processing of string
}
//save the rest of the file into restOfFile
std::string restOfFile{ std::istreambuf_iterator<char>{signatureFile},
std::istreambuf_iterator<char>{} };
signatureFile.close();
Der Rest der Datei kann größer als die RAM-Größe sein, sogar eine Zeichenfolge kann diese Größe überschreiten. Um also eine unbekannte Menge an Daten zu lesen, lesen Sie + gcount – user5821508
Sie lesen nicht * Zeilen *, Sie lesen * Wörter *. Werfen Sie einen Blick auf ['std :: getline'] (http://en.cppreference.com/w/cpp/string/basic_string/getline). –
Danke !! Das hat mich gerettet. Ich bekam eine zusätzliche Zeile, wenn ich Sams Methode benutzte. Getline hat das Problem behoben. – Tommizzy