std::string zu void* und zurück konvertieren
-
Hallo zusammen,
ich kämpfe nun schon ewig damit mithilfe von SDL_net eine Netzwerkverbindung aufzubauen. Momentan kommen zwar UDP-Pakete an meinem Ziel an, aber ich schaffe es nicht, mir ihren Inhalt anzeigen zu lassen. Ich habe schon diverses ausprobiert, aber ich glaube ich mache es immer falsch.
Ein UDP-Paket enthält einen Uint8* Zeiger, für den Datentransport.Zusatzinfos:
Über die genaue Funktion dieses Zeigers bin ich mir nicht ganz klar, diese geht aus der Doku nicht genau hervor. Beim Versenden scheint es so zu sein, dass ich den Zeiger auf meine Daten ausrichten muss, beim Empfangen weiß ich nicht, ob der Zeiger bereits auf die Daten zeigt oder ob ich einen Zeiger übergeben muss, welcher auf einen leeren Datenpuffer zeigt.Aber alles Gebastel hilft mir nicht, wenn ich keine testbare Datenmenge versenden kann. Das Ganze läuft in einer Umgebung, welche nur std::strings als Ein- und Ausgabe akzeptiert. Meine Funktionen für das Senden und Empfangen casten die Uint8* in eine void*. Deshalb müsste ich einen String zum Versenden über ein char-Array oder ähnliches zu einer void* und beim Empfangen wieder zurück umwandeln.
Wie gesagt, habe schon alle möglichen abenteuerlichen Konvertierungen ausprobiert, aber habe vom Casten und ähnlichem ehrlich gesagt wenig Ahnung und da ich bisher noch kein Resultat erzielen konnte, nehme ich an, dass alle Methoden bisher falsch waren. Kann mir jemand mit Ahnung davon vielleicht erklären, wie ich eine solche Konvertierung korrekt ausführe, damit ich eine Grundlage für weitere Experimente habe?
Habe nach endlosen Stunden wirklich keinen Nerv mehr und hoffe sehr, dass mir jemand helfen kann.

-
Mit .c_str() bekommst du zu einem String einen passenden const char*, den kannst du dann mit einem static_cast zu einen const void* umwandeln. Wenn es nötig sein sollte und du sicher bist, dass deine Funktionen den Inhalt nicht ändern, kannst du mit einem const_cast dann noch die constness weg casten.