strings
-
was ist genau der unterschied zwischen
#include <cstring>
und
#include <string>was unterscheidet die beiden, was haben sie gemeinsam?
was sollte man verwenden?
-
cstring ist C
string ist C++Verwende string (--> std::string), da du hier mit String-Objekten arbeitest, die das Speichermanagment für Dich machen und wesentlich mächtiger sind.
siehe auch hier: http://www.willemer.de/informatik/cpp/string.htm
-
Wie hier und hier leicht nachzulesen ist, bieten die beiden 2 unterschiedliche Möglichkeiten Texte/Zeichenketten zu bearbeiten.
* cstring eben die aus C bekannten "Nullterminierten-Charakter-Arrays" über entsprechende Funktionen
* string über die in C++ übliche Klasse std::string (und Zusatzfunktionen).Gruß,
Simon2.
-
-
soweit so gut, aber mal inder praxis:
ich möchte eine datei zum schreiben öffnen
void open ( const char * filename,ios_base::openmode mode = ios_base::out );
hier erwartet er ja ein char* . also einen cstring wenn ich mich nicht irre.
Würde er auch einen string akzeptieren?
Oder müsste ich den dann erst umwandeln?
-
Dafür haben die std::strings eine Methode: c_str() Damit bist du "kompatibel" zu allen Schnittstellen, die auf C-Strings bestehen.
#include <string> // C++ Strings #include <sstream> // Stringstreams #include <fstream> // Datei-Streams void SchreibeInMeineDatei(int dateiNummer){ std::string dateiName; std::ostringstream dateiNamenBaukasten; dateiNamenBaukasten << "MeineDatei_" << dateiNummer << ".txt"; dateiName = dateiNamenBaukasten.str(); /// eigentlich unnötiger Zwischenschritt std::ofstream meineDatei(dateiName.c_str()); meineDatei << "Dieser Satz steht jetzt in meiner Datei!" << std::endl; }