Char und String



  • Guten Morgen,

    irgendwie habe ich immernoch Probleme im Umgang mit dem Datentyp char.

    Momentan habe ich die Schwierigkeit das ich einen String habe, die Funktion der ich dies übergeben will jedoch ein char * erwartet. Ganz ehrlich gesagt, versteh ich nicht wirklich was char * genau darstellen soll.

    Ein char stellt ein Zeichen dar oder? So z.B. 'H' oder 'a'.
    Ein String ist ja eine Kette von chars gel? So z.B. 'H','a','l','l','o'.

    Gibt es einen Unterschied zwischen char* und char * ?

    Ich wäre super dankbar wenn ihr mir Tipps hättet, damit ich dieses Thema endlich verstehe.



  • Ein String ist eine Datenstruktur, die irgendwie eine Folge von Zeichen enthält. Ein char* ist ein Zeiger auf einen Speicherbereich, auf dem (mindestens) ein Zeichen liegt - normalerweise interpretiert man alles hinter dieser Position bis zum nächsten '\0'-Byte als String.

    (achja, std::string ist eine mögliche Implementation des Konzepts "String" - und bei dieser Klasse kannst du die Methode c_str() verwenden, um den dahinter verborgenen char* zu bekommen (für die Weitergabe an z.B. C Funktionen))



  • Danke für die Antwort.

    das war mir noch ein bisschen zu hoch, um das ich wirklich was damit anfangen könnt. 😞

    Ich habe eine Funktion, welches mehrere char * erwartet, ich jedoch mehrere Strings habe und nicht weiß wie ich diese an die Funktion weitergeben kann.



  • int my_funktion (char *string);
    
    int main ()
    {
        char *teststring = "Test";
    
        my_funktion (teststring);
    
        return 0;
    }
    


  • Kleines Beispiel für die Verwendung von c_str().

    void funktion(char* string) {
        ...}
    
    string test = "Test";
    funktion(test.c_Str());
    


  • Steht was in der C++ FAQ:
    Zum Thema Arrays und Pointer

    Und nein, es gibt keinen Unterschied zwischen char* und char *

    Und was verstehst du denn unter String?
    Die Klasse std::string oder ein char-Array?

    Ansonsten sagen die Beispiele ja eigentlich schon alles!


Anmelden zum Antworten