Gibt es einen Weg in C++ mit Standardbibliotheken Binärdaten in einer großen Datei zu überschreiben und den Rest der vorhandenen Daten in der Datei zu erhalten, ohne zuerst die gesamte Datei zu laden?C++ Löschen oder Überschreiben vorhandener Informationen in einer Datei
Beispiel: Wenn ich eine Datei "MyFile" mit dem Text "ABC" habe und "A" durch "Q" ersetzen möchte, gibt es eine Möglichkeit, dies zu tun, ohne "BC" in den Speicher zu laden?
Was ich habe, so weit:
#include <fstream>
int main(int argc, char** argv)
{
std::fstream f;
f.open("MyFile",std::ios::in);
while (f.good())
{
char Current = f.get();
if (Current == 'A')
break;
}
int Location = f.gcount()-1;
f.close();
if (Location < 0)
{
printf("Nothing to do.\n");
return EXIT_SUCCESS;
}
else
{
f.open("MyFile",std::ios::in | std::ios::out);
f.seekp(Location);
f.write("Q",1);
//f.put('Q');
//f << "Q";
f.close();
return EXIT_SUCCESS;
}
}
, die jetzt zu funktionieren scheint - dank all.
Warum würden Sie sogar das tun? Das sieht so aus, als ob Sie versuchen würden, eine Datei als Ihre Datenbank lol –
zu verwenden, obwohl auf Benutzerebene ein 1 Byte gelesen werden kann, auf der OS/Hardware-Ebene ist ein einzelner Ladevorgang von einer Datei viel größer. Dies geschieht zur Optimierung, da der Zugriff auf die Festplatte sehr langsam ist. – bolov
Ich versuche eine Datei als Datenbank zu verwenden (^. ^) - diese wird auf einem Rechner mit extrem begrenzten Ressourcen installiert, so dass nur Standard-C++ - Bibliotheken verfügbar sind. – Arlington