Stringspeicherung in anderen String
-
Hi Leute!

Also ich habe das folgende Problem, doch bevor ich dazu komme, erstmal der Code, der wichtig für mein Problem ist:
char datum[256] = ""; // Feld, in das der Datumstext gedruckt werden soll. string zahlEinsNormal[9] = {"ein", "zwei" , "drei" , "vier" , "fuenf" , "sechs" , "sieben" , "acht" , "neun"}; // 1 - 9 string zahlEinsSpezial[3] = {"erster", "zweiter", "dritter"}; // 1 - 3 => Spezial string zahlZweiSpezial[2] = {"elf", "zwoelf"}; //11 -12 => Spezial string zahlSilben[6] = {"zehn", "zwanzig", "dreizig", "und", "ter", "ster"}; if(tag < 10) { switch(tag) { case 1: strcat(datum, zahlEinsSpezial[0]); break; } } switch(monat) // Schreibung Monate! { case 1: strcat(datum, " Januar "); break; }Es sieht natürlich sehr leer und fehlerhaft aus, aber man soll sich nur auf das wesentliche Konzentrieren, also nicht wundern.

Also ich möchte, dass bestimmte Zeichenketten in die Variable "datum" gespeichert wird. Dazu habe ich gegoogelt und die Funktion:
strcatgefunden. Nun, hierbei funktioniert strcat noch:
case 1: strcat(datum, " Januar "); break;aber in dem ersten Switch bekomme ich bei der Zeile:
case 1: Concat(datum, zahlEinsSpezial[0]); break;immer eine Fehlermeldung d.h. ich kann den Wert "erster" nicht in "name" speichern.
Die Fehlermeldung ist die folgende:error: no matching function for call to `strcat(char&, std:: string&)*
Meine Frage ist nun:
kann ich, wenn ich "strcat" verwenden will, nichts in eine Variable speichern, was zu einem Array gehört?? Wenn dem wirklich so wäre, kennt dann jemand eine Funktion, mit welcher man das machen kann?Danke schön für die Arbeit.

MFG Majin_Clodan
-
für std::string nimm str1 + str2, statt strcat
-
Majin_Clodan schrieb:
error: no matching function for call to `strcat(char&, std:: string&)*
Du mischst hier C-Strings (also char-Arrays) mit C++-Strings (also der Klasse std::string). Das kann so nicht gehen.
Am sinnvollsten wäre es, auf char-Array, und damit auch auf strcat(), völlig zu verzichten, und stattdessen konsequent std::string zu verwenden. Die Konkatenation geht dann mit einem einfachen "a = b + c".
-
Also das "char Array" muss da sein.
Wie müsste denn dann die Zeile aussehen, damit der Wert in das Array gespeichert werden kann? Ich habe es mal mit:
datum = datum + zahlEinsSpezial[0]probiert, aber bekomme hierbei oder bei etwas ähnlichem nur Fehler.

MFG Majin_Clodan
-
Majin_Clodan schrieb:
Also das "char Array" muss da sein.
Warum?
Majin_Clodan schrieb:
datum = datum + zahlEinsSpezial[0]
Das kann nicht gehen, denn datum ist ja ein Array, und kennt den Operator + so nicht. Wenn datum hingegen ein std::string wäre, dann wäre die Zeile so in Ordnung (noch schöner wär's allerdings als "datum += zahlEinsSpezial[0]").
Wenn du am Ende wirklich einen C-String brauchst (wovon ich noch nicht überzeugt bin), dann kannst du die Methode c_str() von std::string zum Umwandeln benutzen:
std::string datum; datum += ...; ... char const *s = datum.c_str();