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
stattpComb[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.