vom [std:: o. C]String zu BYTE[] und umgekehrt
-
(Sorry falls im falschen Forum)
Hier [url]http://www.c-plusplus.net/forum/viewtopic-var-t-is-39373.html [/url] wurde für das Beispiel wie man einen Wert aus der Registry liest folgendes gezeigt:
DWORD dwData = 256; BYTE cDaten[256] = ""; RegQueryValueEx(hKey,"EintragsName",0,0,cDaten,&dwData2);Ähnlich geschah dies auch mit dem schreiben in die Registry. Nun meine Frage wie komm ich von einem String (std::string oder CString, ist egal) zum BYTE Array und wieder zurück?
-
Warum willst Du es denn so kompliziert machen?
Schreib doch einen String rein, dann bekommst Du auch wieder einen String zurpck und musst nichts umwandeln... (REG_SZ)
-
Schau dir mal die Member-Methode c_str() an, damit bekommst du ein char* auf die Daten, den du dann einfach entsprechend casten kannst. In der anderen Richtung liest du das Ganze einfach in ein char-Array ein und weißt dieses dann deinem String-Objekt zu (wenn du es denn in selbigem haben willst)

-
Da musst Du nur etwas vorsichtig sein mit dem casten, da RegQueryValueEx entweder ein Unicode-String (also wenn compiliert mit UNICODE; bzw. Aufruf der W-Funktion) oder einen ANSI-String (wenn compiliert ohne UNICODE; bzw. Aufruf der A-Funktion) zurückliefert.
Und c_str() ist sowieso falsch, da dies nur einen const string zurückliefert... den darf man also nicht schreiben!(kann man bei std::string überhaupt einen schreibaren Buffer erhalten?)