CStringA::Format "verschluckt" Parameter
-
Folgender Code:
CStringA request; request.Format("GET /rent.php?id=%s&version=%s HTTP/1.1\r\nHost: %s\r\n\r\n", csCopyCode, csVersion_bas64, csAddress);
Im request-String gibt es drei %s-Parameter, die mit CStringA Objekten gefüllt werden sollen. Der erste ist ein base64 kodierter String und wird vollständig eingefügt. Der letzte ist ein String im "Klartext" und kommt auch korrekt an. Nur der mittlere, ebenfalls base64 kodiert, wird nur mit dem ersten Zeichen eingefügt, ist aber eigentlich 20 Zeichen lang.
Hat jemand eine Idee wieso das nicht geht?Zusatzinfos:
Ist eigentlich ein Unicode Projekt, ich muss aber in diesem Fall an eine Schnittstelle ANSI Strings übergeben - deswegen CStringA.csVersion_bas64 enthält auch kein 0-Byte an zweiter Stelle. Hab ich schon geprüft.
Danke.
-
Du übergibst hier immer nur void* Zeiger! Übergebe genau das was Du willst:
request.Format("GET /rent.php?id=%s&version=%s HTTP/1.1\r\nHost: %s\r\n\r\n", (LPCSTR) csCopyCode, (LPCSTR) csVersion_bas64, (LPCSTR) csAddress);
Wenn das nicht geht, dann konvertiere entweder oder verwende "%S" anstelle "%s"...
-
Danke, das mit dem cast funktioniert.
-