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.



  • <string>
    <cstring>
    Viele weitere Fragen werden auf der Seite auch beantwortet.



  • 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;
    }
    

Anmelden zum Antworten