chars verketten?



  • Hi,

    ich kenne den Weg noch nicht, wie man char werte miteinander
    verketten kann.

    Wenn ich einen char text1[100] habe und nun zusammen mit dem char text2[100]
    ausgeben möchte, wie stelle ich das an?

    char text1[100] = "Abc";
    char text2[100] = "-test";
    
    text1=text1+text2....//irgendwie so?!
    

    Ausgabe:
    Abc-test



  • char a[5] = "Hello";
    char b[5] = "World";
    std::string summe = *a + *b;
    std::cout << summe;
    


  • da kommt nur müll raus, weil der die zwei ersten buchstaben als zahl interpretiert addiert, und den herauskommenden Buchstaben im String summe speichert. Aber

    (std::string)text1+(std::string)text2)
    

    müsste gehen.



  • wenn schon mit char-arrays (was wir hier latuernicht nicht machen, weil wir im C++ SF std::string verwenden), dann schon so:

    char a[16] = "Hello ";
    char b[8]  = "World";
    strcat(a, b);
    std::cout << a;
    

    ergibt

    Hello World
    

    Meep Meep



  • Na ich finde schon, das man die Grundlagen können sollte ... von daher auch char-Array-Nutzung ... aber die Diskussion hatten wir ja schon 😉

    char hello[7] = "Hello ";
    char world[6] = "World";
    std::cout << hello << world << std::endl; // So weit gibst de ja erstmal nur aus ;)
    
    std::size_t len = std::strlen(hello) + std::strlen(world);
    char* together = new char[len + 1];
    for (std::size_t i = 0; i < len ; ++i)
        together[i] = (i < std::strlen(hello) ? hello[i] : world[i - std::strlen(hello)]);
    together[len] = 0;
    std::cout << together << std::endl;
    delete [] together;
    

    ... http://www.cppreference.com/stdstring/strcat.html geht aber natürlich weiterhin auch ...



  • char *p1 = "Hallo ";
    	char *p2 = "World";
    
    	char *pComb = new char[strlen(p1)+strlen(p2)+1];
    	pComb[0]= '\x0';
    
    	strcat(pComb,p1);
    	strcat(pComb,p2);
    
    	printf("%s",pComb);
    


  • Hmm
    statt

    pComb[0]= '\x0';
    strcat(pComb,p1);
    ...
    

    besser

    strcpy(pComb,p1);
    // oder gleich
    sprintf(pComb,%s%s,p1,p2);
    


  • Hmm... strcpy, strcat, sprintf.... hab ich mich verklickt und bin im C-Forum gelandet?
    Ja, ich weiss, "C ist ne Untermenge von C++"(*) und (fast) jeder kriegt C++ ueber C beigepult, aber es sind zwei inzwischen getrennte Sprachen und sollten auch so behandelt werden. Schreibt kein C wenn irh C++ schreiben wollt 😞

    (*)gilt nur fuer die Syntax und die Sprachelemente.



  • Klar sollte man hier string vorziehen und dann braucht man diese Sachen nicht. Trotzdem sind die genannten Funtionen Teil der C++ Standardbibliothek und als solche natürlich verwendbar.


Anmelden zum Antworten