string addieren



  • Hallo,
    Ich möchte einen String und ein null-terminiertes Char-Array aneinanderhängen.

    string string1="Text";
    char chararray1[3];
    chararray1[0]='a';
    chararray1[1]='b';
    chararray1[2]=0;

    string1=string1+chararray1;

    Geht das? Normalerweise müsst ich das Array doch erst umwandeln, oder?
    Das möchte ich nicht machen, weil ich in einer Schleife bin.
    Und die Umwandlung mit "string string2(chararray1)" geht ja nur einmal bei der Definierung.



  • "Definierung" gibt es nicht. du meinst wohl "Definition".
    es spräche nichts dagegen, die definition von string2 in die schleife zu packen:

    while (...)
    {
       string string2(chararray1);
       string1 += string2;
    
    }
    

    aber was du fragst, hättest du auch selbst herausfinden können, indem du einfach deinen compiler ein stückchen testcode kompilieren lässt.

    string1 = string1 + chararray1;//problemlos möglich, solange chararray1 ein NTBS ist (null terminierter zeichenstring)
    //oder:
    string1 += chararray1;
    


  • krischan111 schrieb:

    char chararray1[3];
    chararray1[0]='a';
    chararray1[1]='b';
    chararray1[2]=0;

    noch ein letzter hinweis, dann war's:
    die folgende syntax ist auch erlaubt.

    char chararray1[3] = "ab"; //"ab" ist ein stringliteral, das automatisch eine \0 am ende hat
    //noch einfacher:
    char chararray1[] = "ab"; //die länge des arrays kann der compiler auch automatisch bestimmen.
    


  • Jupp, danke.

    Hat mich bloß gewundert, dass ich kein Tutorial dazu gefunden hab.
    http://www.cppreference.com/cppstring/string_operators.html listet strings, chars und c_strings auf, aber kein chararray. Nagut!



  • c-strings sind idR chararrays. zumindest können chararrays nach "zeiger auf char" konvertiert werden.

    der begriff c-string bezieht sich nur darauf, dass am ende der zeichenkette eine '\0' steht, die sie terminiert. der allgemeine begriff dazu lautet NTBS (null terminated byte string). ein zeiger auf einen c-string ist immer nur ein zeiger auf ein char (=byte). und einen zeiger auf einen char kannst du auch in ein char-array zeigen lassen.

    alles klar?


Anmelden zum Antworten