zeichen an zeichenkette hängen
-
Hi,
ich möchte mit strcat(), ein zeichen an eine Zeichenkette anhängen. Hierbei bin ich auf ein Problem gestoßen.
#include <stdlib.h> #include <stdio.h> int main(int argc, char* argv[]) { char zeichen; char wort[10]; cin>>zeichen; strcat(wort, zeichen); return 0; }
wenn ich nun kompiliere, so meint der Kompailer, dass char nicht in const char* konvertiert werden kann. Aber wie soll ich denn sonst ein zeichen an eine zeichenkette hängen?
Gruß
-
wieso verwendest du char arrays statt std::string?
-
hi, nimm doch einfach
char zeichen[1];
-
mika schrieb:
hi, nimm doch einfach
char zeichen[1];
ich verstehe den Witz nicht, falls es einer sein soll...
-
also ich habs getestet, bei mir geht das
na die strcat-funktion will doch als 2.parameter nen char-pointer haben.
und char x[1] ist ein pointer auf ein char
-
mika schrieb:
hi, nimm doch einfach
char zeichen[1];
Ja könnte ich natürlich machen, aber was du nicht wissen kannst, ist dass ich vor dem Verketten eine Zahl in ein Zeichen umwandle und dies mit char[1] nicht möglich ist. So ist dies nicht zulässig: zeichen = (char[1]) zahl;
Weißt du vielleicht wie man solche Konvertierungen durchführen kann?Gruß
-
strcat funzt nur mit char[]/char*
du kannst auch nicht strcat(wort, &zeichen); machen, weil nach &zeichen kein \0 stehen muss.
-
Lesco
ja, wieso verwendest du nicht einfach strings?
-
mika schrieb:
also ich habs getestet, bei mir geht das
Deswegen ist es aber immer noch nicht gut.
-
@Walli
das hab ich auch erst im nachhinein gemerkt
-
bsp mit strings
string wort="Test "; int i=65; //deine Zahl wort+=i; cout << wort << endl; //wort = "Test A" return 0;
-
Hi, nochmal danke für eure Antworten!
Ein kleines Problem habe ich noch. Bei dieser Anwendung:cout <<wort<<endl;
kommt folgender Fehler beim kompilieren:
Binaerer Operator '<<' : Kein Operator definiert, der einen rechtsseitigen Operator vom Typ 'class std::basic_string<char,struct std::char_traits<char>,clas
s std::allocator<char> >' akzeptiert (oder keine geeignete Konvertierung moeglich)wie akzeptiert der Kompailer diesen Ausdruck?
-
hm, ich nutze VC++6.0, da hab ich nur
#include <string>
geschrieben, und da hat es gefunzt.
du hast bestimmt die <string.h> included, da kam der fehler bei mir auch...
nimm einfach die <string>, dann geht alles seinen geregelten
-
[:)] schrieb:
Hi, nochmal danke für eure Antworten!
Ein kleines Problem habe ich noch. Bei dieser Anwendung:cout <<wort<<endl;
kommt folgender Fehler beim kompilieren:
Binaerer Operator '<<' : Kein Operator definiert, der einen rechtsseitigen Operator vom Typ 'class std::basic_string<char,struct std::char_traits<char>,clas
s std::allocator<char> >' akzeptiert (oder keine geeignete Konvertierung moeglich)wie akzeptiert der Kompailer diesen Ausdruck?
cout << wort.c_str() <<endl;