const char* to char[]



  • Hi!

    Ich lese eine Textdatei in einen std::string. Eine Funktion, die einen Teilbereich dieses Strings zurückgeben soll, hat als Rückgabetyp char[] definiert. Die Frage ist nun, wie wandle ich einen const char*, wie er von std:string.c_str() zurückgegeben wird in ein char[] um?



  • mit copy and paste



  • Das Problem hiebei ist, dass ich zuerst Speicher für das char Array dynamisch anfordern muss, den die Funktion, die meine Funktion aufgerufen hat aufräumen müsste. Gibt es nicht eine Möglichkeit ohne dynamische Anforderung.



  • Kommt darauf an, was Du mit dem String machen willst. Du erhaelt einen const Pointer, wenn Du diesen veraendern willst, musst eben dynamisch Speicher allocieren und mittels strcpy arbeiten (nicht vergessen wieder freigeben), ansonsten kannst natuerlich mit dem const char * arbeiten.



  • Ich lese eine Textdatei in einen std::string. Eine Funktion, die einen Teilbereich dieses Strings zurückgeben soll, hat als Rückgabetyp char[] definiert.

    Wie soll das gehen? Es kann höchstens char* sein.

    Die Frage ist nun, wie wandle ich einen const char*, wie er von std::string.c_str() zurückgegeben wird in ein char[] um?

    da ist eigentlich unnötig, weil char[] fast dasselbe ist wie char*
    ansonsten gar nicht, weil die größe des char[]-feldes schon beim compilieren feststehen muss.
    es geht höchstens das folgende:

    #include <string>
    #include <cstring>
    
    std::string getStringValue();
    
    // ...
    
    void foo()
    {
        // ...
        char destArray[/*rand()*/];
    
        std::strncpy(destArray, (getStringValue()).c_str(), sizeof(destArray));
    
        // ...
    }
    

    Das Problem hiebei ist, dass ich zuerst Speicher für das char Array dynamisch anfordern muss, den die Funktion, die meine Funktion aufgerufen hat aufräumen müsste.

    Sehr schlecht, dass der Speicher frei rumgereicht und dann auch noch von zwei verschiedenen Funktionen bearbeitet wird.

    [quote]
    Gibt es nicht eine Möglichkeit ohne dynamische Anforderung.
    [/qouote]

    std::string

    mfg

    edit: sieht jemand den fehler im bb-code? ich finde den gerade nicht.



  • Ich habe jetzt meine Library so umgeschrieben, dass sie nur std::strings verwendet.
    Danke für die Hilfe.


Anmelden zum Antworten