Hallo Forum,
ich brauche eine Datei mit mehreren logischen Sätzen aus integer- und string-Werten. Dann möchte ich einzelne Werte der Sätze in der Datei ändern. Zu Testzwecken habe ich es mit string-Daten probiert wie in den nachstehenden Funktionen.
Wenn ich nun einen Wert überschreiben will, (z.B: ab Byte 12 in der Länge 6) steht dann in der Datei bis zum Byte 12 lauter Nullen, dann der zu ersetzende Text und der Rest der Daten ist weg. Was muss ich tun damit das funktioniert?
int writeBinaryFile(string path, string& s, int firstByte) { int lastByte = -1; //nächstes Byte od Fehler: -1 ofstream f(path, ios::binary); if (f) { f.seekp(firstByte); f.write((char*)s.c_str(), s.length()); if (f) { lastByte = f.tellp(); f.close(); return lastByte; } } System::Windows::Forms::MessageBox::Show("(writeBinaryFile) Schreib-Fehler!"); f.close(); return lastByte; } /// end func writeBinaryFile int readBinryFile(string path, string& s, int firstByte) { int lastByte = -1; ifstream f(path, ios::binary); if (f) { f.seekg(firstByte); f.read(&s[12], 6); } return lastByte; }