PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++: char* durch string ersetzbar?


squall23
2007-12-23, 00:10:44
Ich versuche gerade mich mit C++ näher vertraut zu machen und eine eigene Socket Klasse zu schreiben. Ich weis, dass es etliche und 1000% bessere bereits gibt, allerdings gehts mir ja auch primär um die Übung :) .
Nun stehe ich allerdings vor einem kleinen Problem. Laut dieser (http://www.linuxmanpages.com/man2/recv.2.php) Manpage ist recv wie folgt definiert:


ssize_t recv(int s, void *buf, size_t len, int flags);


Soweit ja auch noch alles klar. Allerdings würde ich gerne von den char Feldern wegkommen und diese gegen strings (die C++ klasse ist gemeint) ersetzen. Bei bei send ist das auch kein problem, da ich mir mit

string.c_str();
behelfen kann. Gibt es für recv eine ähnliche Lösung?

Auf jeden Fall mal Danke fürs Lesen und die Hilfe.

Gnafoo
2007-12-23, 05:31:17
Ich habe es nicht getestet und bin einige Jahre aus C++ raus inzwischen, aber ich denke so in etwa sollte das gehen:


#include <sstream>
//...

std::ostringstream output (std::ostringstream::out);
ssize_t bytesRead = 0;
do
{
char buffer[1024];
bytesRead = recv(socket, buffer, 1024, flags);
output.write(buffer, bytesRead);
}
while (bytesRead > 0);

return output.str();

Gast
2007-12-23, 09:57:17
Danke schonmal für die Antwort! Ich habe mich auch schon mit dem Gedanken gespielt vorher ein char array zu verwenden und dann das ganze in einen string zu kopieren. Allerdings war ich mir nicht sicher ob es nicht eine elegantere Lösung gibt. Falls sich nichts besseres findet werde ich deinen Vorschlag nehmen.

Kennt noch jemand einen besseren/eleganteren Weg?

Gast
2007-12-23, 12:26:20
Es geht nicht anders