char verbinden
-
Hallo!
Ich möchte zwei char (zwei Buchstaben) zusammensetzen und als char* weiterverarbeiten. strcat() hat leider nicht funktioniert... Was muss ich tun?
Danke für Eure Hilfe!
Jörg
-
Ein char hat nur Platz für ein einzelnes Zeichen. Um mehrere Zeichen zu verarbeiten, brauchst du entweder char-Arrays oder std::string (ich empfehle letzteres).
PS: Und die Stringverarbeitung aus C (strcat() und Kollegen) kommt nicht mit einzelnen char's zurecht, weil die nicht null-terminiert sind.
-
Und wie kriege ich die einzelnen chars in den char*?
char* ist doch ein char-Array, oder bin ich gerade völlig verwirrt?
-
Nein, char* ist kein char-Array, sondern ein Zeiger, der (möglicherweise) auf ein char-Array zeigt. Und dessen Elemente könntest du über den Index-Zugriff ansprechen:
char text[3];//zwei Zeichen + '\0' text[0]=first_char; text[1]=second_char; text[2]='\0';//Stringende-Marke
-
Danke!
-
oder du machst es mit _sntprintf ... nur halt als %c als formatidentifikator und dann noch als parameter mit das char übergeben ...
-
(D)Evil schrieb:
oder du machst es mit _sntprintf ... nur halt als %c als formatidentifikator und dann noch als parameter mit das char übergeben ...
Es geht noch umständlicher: Du könntest memcpy verwenden, um die Bytes einzeln zu kopieren.

-
Ich habe es nicht getestet, aber ich glaube auch das du char 1 und char 2 mittels ## verketten kannst. Dann erhieltest du eine Ausgabe 2er Werte (z.B. 4 und 1 wird zu 41 - der Wert bleibt aber 4 und 1 und wird nicht zu 41!!!!) die du dann weiterverarbeiten kannst. Vielleicht hilft es ja weiter.
-
Ich habe es nicht getestet, aber ich glaube auch das du char 1 und char 2 mittels ## verketten kannst. Dann erhieltest du eine Ausgabe 2er Werte (z.B. 4 und 1 wird zu 41 - der Wert bleibt aber 4 und 1 und wird nicht zu 41!!!!) die du dann weiterverarbeiten kannst. Vielleicht hilft es ja weiter.
-
DerNameIstWichtig schrieb:
Ich habe es nicht getestet, aber ich glaube auch das du char 1 und char 2 mittels ## verketten kannst.
Der Operator funktioniert aber nur beim Präprozessor (in Makro-Definitionen) und nicht im normalen Code, also ist er hier wohl sinnlos.
(und dadurch, daß du deine Beiträge verdoppelst, erhöhst du auch nicht deren Informationsgehalt ;))