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?)


Anmelden zum Antworten