Typ umwandlung
-
http://www.cplusplus.com/reference/clibrary/cstdio/sprintf.html anstatt printf ist wohl am einfachsten.
-
jango schrieb:
Wenn ich den Char "hashwert1" einfach einem String zuweise erhalte ich leider nicht den Hashwert sondern nur sehr komische Zeichen. Also müsste ich das noch irgendwie umwandeln denke ich.
Der Hash-Wert besteht aus nahezu beliebigen Zeichen, und du erhältst ihre jeweilige ASCII-Repräsentation. Das sollte ausreichen, um damit arbeiten zu können.
Wenn du etwas pseudo-lesbares willst, kannst du auch in einer Schleife über das Array rennen und jeden char als Hex-Wert verarbeiten.
-
Das ist der Fehler den ich erhalte wenn ich es mit sprintf probiere.
error: cannot convert 'std::string' to 'char*' for argument '1' to 'int sprintf(char*, const char*, ...)'
jango
-
Liegt wohl daran, daß strcpy() keine Ahnung von std::string hat - und darum hier auch völliger Käse ist. (*notiert* Tadel an BitWax und cfbdf für sinnlose Kommentare)
-
jango schrieb:
Das ist der Fehler den ich erhalte wenn ich es mit sprintf probiere.
error: cannot convert 'std::string' to 'char*' for argument '1' to 'int sprintf(char*, const char*, ...)'
jango
Du musst Dich da schon entscheiden: Willst Du mit "C-Strings" (also "char*/char[]", "NTBS" - Null Terminated Byte Strings, ...) arbeiten oder mit std::string (= StdLib-Klasse zur Darstellung von Zeichenketten).
Für Ersteres nimmt man sprintf/str___() für Zweiteres nicht.
z.B. kannst Du nicht (sicher) mit sprintf() in einen std::string schreiben...Gruß,
Simon2.
-
Irgendwie versteh ich gar nichts mehr.
unsigned char hashwert1[16]; string text1 = "Hallo"; string AUSGABE; char text2[50]; strcpy(text2,text1); md5(text2, hashwert1); for(int i = 0; i < 16; i++ ) printf( "%02x", hashwert1[i] );Also ich würde gerne den Hashwert der mir in dem Programm auch in der Konsole ausgegeben wird in dem String AUSGABE speichern.
ich habe es mit sprintf probiert aber das klappt nicht.
MFG
jango
-
Stringstreams bieten sich hier an:
stringstream out; out<<hex<<setfill('0'); for(i=0;i<16;++i) out<<setw(2)<<hashwert1[i]; AUSGABE = out.str();(alternativ geht's über ein char-Array und sprintf())
-
Einen Fehler wirst Du noch drin haben (falls das noch Dein Code ist:
string text1 = "Hallo"; char text2[50]; // => strcpy(text2,text1.c_str()); // str__-Funktionen kennen keine string-Objekte // ... deswegen muss man sich vorher einen (char const*) liefern lassenGruß,
Simon2.
-
CStoll schrieb:
Liegt wohl daran, daß strcpy() keine Ahnung von std::string hat - und darum hier auch völliger Käse ist. (*notiert* Tadel an BitWax und cfbdf für sinnlose Kommentare)
Kann ich was dafür, wenn er zu dumm ist eine Doku zu lesen. Und er hat ja schon ganz oben char* und string vermischt.

-
cfbdf schrieb:
CStoll schrieb:
Liegt wohl daran, daß strcpy() keine Ahnung von std::string hat - und darum hier auch völliger Käse ist. (*notiert* Tadel an BitWax und cfbdf für sinnlose Kommentare)
Kann ich was dafür, wenn er zu dumm ist eine Doku zu lesen. Und er hat ja schon ganz oben char* und string vermischt.

Na dann solltest du ihm auch eine funktionierende Lösung anbieten (und gelegentlich muß man doch auf char* zugreifen, weil die verwendeten Funktionen nichts anderes verstehen).
(*notiert* gelbe Karte an cfbdf)
Edit: Und außerdem kämen bei eurer "Lösung" genauso kryptische Zeichenfolgen heraus wie bei jangos Ursprungsprogramm

-
CStoll schrieb:
cfbdf schrieb:
CStoll schrieb:
Liegt wohl daran, daß strcpy() keine Ahnung von std::string hat - und darum hier auch völliger Käse ist. (*notiert* Tadel an BitWax und cfbdf für sinnlose Kommentare)
Kann ich was dafür, wenn er zu dumm ist eine Doku zu lesen. Und er hat ja schon ganz oben char* und string vermischt.

Na dann solltest du ihm auch eine funktionierende Lösung anbieten (und gelegentlich muß man doch auf char* zugreifen, weil die verwendeten Funktionen nichts anderes verstehen).
Habe ich. Er hätte nur 19 Zeichen an seinem ersten Programm ändern müssen, wenn ich mich nicht verzählt habe.
test:s t e x t 2 , t e x t 1 = t e x t 2 ;stimmt
Edit: Und außerdem kämen bei eurer "Lösung" genauso kryptische Zeichenfolgen heraus wie bei jangos Ursprungsprogramm

Meine Lösung hat nix mit der falschen von BitWax zu tun. Du musst meine mal einzeln lesen.
(*notiert* Briefmarken für Karten an CStoll kaufen)
-
cfbdf schrieb:
Edit: Und außerdem kämen bei eurer "Lösung" genauso kryptische Zeichenfolgen heraus wie bei jangos Ursprungsprogramm

Meine Lösung hat nix mit der falschen von BitWax zu tun. Du musst meine mal einzeln lesen.
Da wäre es doch gut gewesen, die Antwort etwas umfangreicher zu formulieren

(*notiert* Briefmarken für Karten an CStoll kaufen)
Mach nur, was du denkst

-
CStoll schrieb:
cfbdf schrieb:
Edit: Und außerdem kämen bei eurer "Lösung" genauso kryptische Zeichenfolgen heraus wie bei jangos Ursprungsprogramm

Meine Lösung hat nix mit der falschen von BitWax zu tun. Du musst meine mal einzeln lesen.
Da wäre es doch gut gewesen, die Antwort etwas umfangreicher zu formulieren

Ein bisschen sollen die Leute schon noch selber denken. Manchmal reicht ja ein Tipp und es muss nicht immer die Gesammtlösung sein. Das BitWax mit seiner falschen Lösung meine ähnliche "zerstört" hat, war halt dumm.