String to Byte?
-
Hallo,
meine RegSetValueEx() braucht einen Byte Wert als Eingabewert, meine Copy Funktion jedoch char. Da ich 2 Zeichenketten addieren möchte, habe ich beide als String definiert.
Nun ist meine Frage, wie bekomme ich einen String in BYTE konvertiert?
Vielen Dank im voraus und
liebe Grüße
Patrick
-
So:
reinterpret_cast<const byte*>(deinString.c_str());
-
Code:
BYTE cString[] = reinterpret_cast<const byte*>(pfad.c_str());Fehlermeldung:
G:\C++\keylogger_installer\main.cpp||In function `int main(int, char**)':| G:\C++\keylogger_installer\main.cpp|27|error: initializer fails to determine size of `cString'| G:\C++\keylogger_installer\main.cpp|27|error: invalid initializer| ||=== Build finished: 2 errors, 0 warnings ===|
-
Im konkreten Fall muss es
const BYTE* cString = reinterpret_cast<const BYTE*>(pfad.c_str());lauten.
-
Ich merk schon, C++ mag mich richtig...
// BYTE cString[] = reinterpret_cast<const byte*>(pfad.c_str()); const BYTE* cString = reinterpret_cast<const BYTE*>(pfad.c_str()); RegSetValueEx(hKey,"EintragsName",0,REG_SZ,cString,strlen(reinterpret_cast<char*>(cString))+1);Fehler:
G:\C++\keylogger_installer\main.cpp||In function `int main(int, char**)':| G:\C++\keylogger_installer\main.cpp|30|error: reinterpret_cast from type `const BYTE*' to type `char*' casts away constness| ||=== Build finished: 1 errors, 0 warnings ===|Das wird mir schon peinlich langsam, dass ich das nicht hinbekomme und euch immer fragen muss :S
-
Du darfst das const nicht einfach wegcasten, demnach musst du nach const char* casten.
Oder gar nicht und gleich strlen(pfad.c_str())+1 schreiben.
-
Patistar schrieb:
strlen(reinterpret_cast<char*>(cString))+1WTF?
cString.length() + 1
-
Das Problem ist aber, dass .length() by BYTE nicht funktioniert?!
const BYTE* cString = reinterpret_cast<const BYTE*>(pfad.c_str()); RegSetValueEx(hKey,"EintragsName",0,REG_SZ,cString,cString.length() + 1);G:\C++\key_installer\main.cpp||In function `int main(int, char**)':| G:\C++\key_installer\main.cpp|31|error: request for member `length' in `cString', which is of non-class type `const BYTE*'| ||=== Build finished: 1 errors, 0 warnings ===|
-
Er meinte pfad.length().
-
Ich glaub ich habe eine Lösung:
RegSetValueEx(hKey,"EintragsName",0,REG_SZ,reinterpret_cast<const BYTE*>(pfad.c_str()),strlen(pfad.c_str()) + 1);
-
Und wieso zum Geier nicht so?
BYTE const* data = reinterpret_cast<BYTE const*>(pfad.c_str()); RegSetValueEx(NULL, "EintragsName", 0, REG_SZ, data, pfad.length() + 1); // ^^^^^^^^^^^^^^^^^Grüssli
-
Stimmt, da hätte ich auch drauf kommen können...
Vielen Dank

-
Patistar schrieb:
Das Problem ist aber, dass .length() by BYTE nicht funktioniert?!
Athar schrieb:
Er meinte pfad.length().
Ja richtig, sorry.