Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : C oder C++ ? Brauch mal einen Rat von euch ?



ikarus
16-01-2005, 20:10
Hallo,

ich bin gerade dabei eine Server-Client-Anwendung zu schreiben.
Zur Zeit arbeite ich mit char buf[4096] für die gelesenen Daten.

char buf[4096];
read(fd, buf, 4096);

Es funktioniert auch alles bestens, da ich mich in letzter Zeit etwas intensiver mit C++ beschäftigt habe kommt mir jetzt die Frage ob ich die Daten nicht lieber in einem std::string speichern sollte. Die Klasse std::string bietet mir mehrere Funktionen die mir vieles leichter machen würden.

Was meint Ihr ? Was würdet Ihr mir raten char * oder std::string ?
Wenn std::string, wie würdet Ihr die read-Funktion am besten schreiben ???

panzi
16-01-2005, 21:43
Naja, bedenke dies:
Verschikst du nur ASCII Zeichen, bzw. bytes die > 0 sind? Dann geht std::string sicher. Aber wenn du auch ein \0 schiken und empfangen können musst, dann könnte std::string probleme machen, denn ein \0 makiert das Ende eines Strings.

wraith
16-01-2005, 21:51
Es spricht nichts dagegen deine Daten _nachdem_ read in einen std::string zu speichern, du kannst aber (bzw. solltest nicht) direkt in einen std::string mit read einlesen, weil nicht garantiert ist, daß der zugrunde liegende Speicher an einem Stück ist.
Du kannst statt einem char-Array aber zb. einen std::vector nehmen.

In einem std::string kann auch das normale Stringendezeichen 0 problemlos verwendet werden.Beim speichern des char-Arrays in den string kannst du aber nicht den normalen std::string Konstruktor verwenden, da dieser nach dem Stringendezeichen sucht.
Aber das ist kein Problem, wenn du die Anzahl der gelesenen Zeichen kennst, dann konstruierst du deinen string mit std::string(array,array + AnzahlZeichen);