Zeile unbekannter Länge aus Registry lesen
-
Hintergrund:
Ich habe eine Funktion geschrieben mit der ich Einträge (Values, Entries) aus der Registry in eine Datei schreiben kann. Hierbei habe ich mittels RegQueryInfoKey() auf die möglichen Größen des Namens und der Daten eines Eintrags geachtet.Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\MeineSoftware] "MeinEintrag"="MeineDaten <Daten>"<Daten> soll hier mal ein Platzhalter für 1000 Nullen sein.
Und genau diese Datei möchte ich nun wieder einlesen. Das Problem dahinter ist nur das ich die Länge einer Zeile nicht weis und deswegen die Funktion fgets() oder die Funktion ReadFile() nur über Umwege nutzen kann.
Kennt jemand eine Funktion die wie std::getline() eine Zeile aus einer Datei liest ? Oder kennt jemand eine Funktion welche die Länge der Zeile bestimmt ?
-
Du könntest dir eine eigene Funktion schreiben die die Länge einer Zeile bestimmt. Eine Zeile wird ja immer mit '\n' beendet.
Was spricht denn dagegen ?
Pseudo Code:
int laenge(char* text,int textLen,int pos) { for(int i=pos; i<textLen; i++) { if(text[i]=='n') { return i-pos; } } return textLen-pos; }Das Ganze muss man halt noch auf WinApi anpassen

-
Eigentlich nur das du die komplette Datei einlesen musst, was bei großen Dateien nicht immer erwünscht ist.
Wenn es halt keine Funktion gibt, schreibe ich mir eine Funktion welche mir die maximale Länge einer Zeile eines Stream per Hand bestimmt und danach die Positionszeiger des Streams wieder auf den Anfang setzt.
-
Und warum benutzt Du nicht
Bitte ein Bit schrieb:
std::getline()
?
-
<heul>
Weil es eine Komponente ist, welche von einigen Projekten benutzt wird.Und einige Projekte sind nunmal in C programmiert.

</heul>
-
Dann bleibt Dir wohl nur, selbst eine kleine Funktion zu schreiben, die eine Zeile einliest ...