String Kopieren
-
Hallo Zusammen
Ich bin ein C++ neuling, und habe eine kleine Frage:Mit diesem Befehl, kann ich "const char" ans ende der string1 kopieren
strcat(string1,"hallo");Ich möchte jedoch ans Ende des "String1" einen Buchstaben Kopieren
die Variable Buchstabe ist vom Datentyp Char.strcat(string1,Buchstabe);
Folgende zwei Felher entstehen:
[C++ Fehler] versch_u.cpp(35): E2342 Keine Übereinstimmung des Typs beim Parameter '__src' ('const char *' erwartet, 'char' erhalten)[C++ Fehler] versch_u.cpp(35): E2034 Konvertierung von 'int' nach 'const char *' nicht möglich
Was muss ich machen, um dies zu Realisieren?
Danke für eure Hilfe!!!
-
void append_char(char *ziel, char c) { // hängt c an ziel an size_t end = strlen(ziel) + 1; ziel[end] = c; ziel[end+1] = 0; }
-
Einfacher (komplettes Programm):
#include<iostream> //iostream includieren #include<string> //string includieren using namespace std; //Standard Namespace main() // Hauptfunktion (Datentyp void muss nicht angegeben werden) { string Str; //String-Variable deklareiren char Zeichen; //Char-Variable deklarieren int end; //Int-Variable deklarieren cout<<"String eingeben: "; //Eingabeaufforderung getline(Str); //Eingabe cout<<"Zeichen vergessen? "; //Eingabeaufforderung 2 getchar(Zeichen); //Wartet auf ein Zeichen, das er in "Zeichen" einliest end=Str.length(); //end wird auf Groesse vom String gesetzt Str[end]=Zeichen; //Setzt hinter dem letzten Zeichen das eingegebene ein system("cls"); //Loescht den Bildschirm cout<<"Dein String lautet: "<<Str; //String wird ausgegeben getchar(); //Wartet auf ein Zeichen }
[ Dieser Beitrag wurde am 26.05.2003 um 22:34 Uhr von Spieleprogrammierer editiert. ]
-
Darf man bei std::string einfach hinter den zur Verfügung stehenden Speicher schreiben? Ich würde doch eher Str += Zeichen; vorschlagen!
-
Spieleprogrammierer: nach std::string war nicht gefragt. Deine Umsetzung meiner Idee erzeugt zudem undefiniertes Verhalten, weil du über das Ende des Strings hinausschreibst. Zum Glück kommt es gar nicht soweit und compiliert gar nicht erst, da getchar zum einen nicht definiert und zum anderen falsch angewandt wurde.
-
... und ebenso das getline in falscher manie
-
Original erstellt von elise:
... und ebenso das getline in falscher manieWieso sollte getline falsch sein? Es liest halt auch Leerzeichen ein, na mein Gott. und übrigens bei std::string: Dann muss man halt hinschreiben:
Str=Str+Zeichen;
oder, wie es jemand schoin sagte:
Str+=Zeichen;
[ Dieser Beitrag wurde am 27.05.2003 um 08:33 Uhr von Spieleprogrammierer editiert. ]
-
versuch mal dein programm zu kompilieren...
-
die erste antwort auf deine frage solltest du auf keinen fall verwenden, weil sie falsch ist. erstens wurde nicht geprüft, ob der speicher bei ziel ausreicht und außerdem gehört das + 1 beim initialisieren von end weg.
-
Original erstellt von elise:
versuch mal dein programm zu kompilieren...#include<iostream> #include<string> #include<cstdlib> using namespace std; main() { string Str; char Zeichen; cout<<"String: "; getline(Str); cout<<"\nZeichen: "; cin.get(Zeichen); Str+=Zeichen; //oder Str=Str+Zeichen system("cls"); cout<<Str; getchar(); }
So wäre es jetzt korrigiert, und was ist daran falsch?
-
Original erstellt von Spieleprogrammierer:
So wäre es jetzt korrigiert, und was ist daran falsch?Themenverfehlung
-
Original erstellt von Shade Of Mine:
ThemenverfehlungNicht wirklich.
-
Original erstellt von Spieleprogrammierer:
Nicht wirklich.Doch!
Du sollst kein std::string verwenden sondern char* - so wie es der Frager wollte.Oder eklaerst du jemanden der nach dem Weg zu Bahnhof fragt, wie er zum Flughafen kommt?
-
Original erstellt von Shade Of Mine:
*Doch!
Du sollst kein std::string verwenden sondern char - so wie es der Frager wollte.Oder eklaerst du jemanden der nach dem Weg zu Bahnhof fragt, wie er zum Flughafen kommt?**
Und ich sage nochmal nein, lies dir das Thema durch und achte genau auf die Fragestellung, in seinem Text kommt nämlich vor, dass er ein char* an einem STRING anhängen will, somit bist du hier anscheinend fehl am Platz
-
Original erstellt von <g>:
die erste antwort auf deine frage solltest du auf keinen fall verwenden, weil sie falsch ist. erstens wurde nicht geprüft, ob der speicher bei ziel ausreichtdas kann man nicht überprüfen. Die Funktion geht wie strcat, die dem Fragesteller anscheinend vertraut ist, davon aus, dass der Aufrufer weiß was er tut.
**
und außerdem gehört das + 1 beim initialisieren von end weg.**stimmt
-
NE er will ein char an eine Variable die sich "String1" nennt anhängen.
Der Datentyp von "String1" ist unbekannt. Anzunehmen das er vom typ char * ist (strcat).Und als kleinen Tip: Mit mehr sachlichkeit kommst auf dauer weiter.
-
Hi!
Nur weil er "string1" geschrieben hat, heißt das nochlange nicht das der datentyp String ist.
ausßerdem arbeitet strcat laut definition ja eh mit char*
char *strcat(char *dest, const char *src);
-
Original erstellt von Spieleprogrammierer:
somit bist du hier anscheinend fehl am PlatzDer Einzige der hier fehl am Platze ist, bist du mit deinen unverschämten und arroganten Kommentaren. Von dir hab ich bisher noch nix produktives gelesen. Nur Pöbeleien und Frechheiten.
So, das musste mal gesagt werden.
Original erstellt von Spieleprogrammierer:
in seinem Text kommt nämlich vor, dass er ein char an einem STRING anhängen will,*Hättest du eine Ahnung von der Materie, hättest du festgestellt, dass der Fragesteller mit strcat implizit auf ein char-Zeiger hingewiesen hat, denn für den std::string gibts keinen strcat. Somit wärs eigentlich auch mehr ne C statt ner C++-Frage...
soviel dazu.
-junix
-
@chribu84: ist deine Frage damit eigentlich beantwortet? (mal vom Geflame hier abgesehen?)
-junix
-
Naja, nix produktives kann man wohl eher nicht sagen, also sagen wir so, nur weil ich mich vielleicht geirrt habe, heißt das nicht gleich, dass bei mir nur Pöbeleien herauskommen, und zu deinen texten kann man auch nicht gerade sagen, dass du ein Engel bist. Und außerdem lasse ich mich, nur weil ich einmal was falsches sage, gleich als leihe bezeichnen, und das gleich von 5-6 Leuten hier, das finde ich nämlich frech.
[ Dieser Beitrag wurde am 27.05.2003 um 09:11 Uhr von Spieleprogrammierer editiert. ]