Problem mit Char
-
Hi Leute,
char* Copy(char input[], int start, int count) { char *result = new char[count-1]; for(int i = 0; i < count; i++) { result[i] = input[start+i]; } result[sizeof(result)] = 0; return result; }Das ist eine selbstgeschrieben Funktion um aus einem Char-Array eine bestimmte Anzahl an Zeichen auszulesen. (Das gleiche wie die Pascal-Copy-Funktion.)
Nun habe ich einen Char-Array, der z.B. ":[google]!dfjsdkfjl" enthält und ich möchte mittels dieser Copy-Funktion das 2 (da Array = 1) Zeichen bis zu dem "!" extrahieren (! Position = 9), dann müsste ich theoretisch ausgabe = Copy(arrayname, 1, 9); aufrufen, um das Ergebnis ("[google]") zu bekommen. (mit char *ausgabe = new char[9];)
Aber ich erhalte immer nur die ersten 3 Zeichen...
Irgendwas stimmt nicht, vielleicht könnt ihr mir helfen.

MfG, Refox
-
Das sagt mir, dass du keinen 64bit Compiler hast

Mit sizeof kann man nicht die Größe von Arrays die sich hinter Pointern verstecken ermitteln, erst recht nicht, da sizeof zur Compilezeit abgehandelt wird.Achja warum verwendest du nicht std::string?
std::string a = ":[google]!dfjsdkfjl"; std::string b = a.substr(1, 9);
-
Ich hab jetzt gemerkt, dass es wohl daran liegt, dass ich mit result[sizeof(result)] = 0; das letzte Zeichen entferne. Entferne ich das jedoch nicht, so gibt es ein komisches Zeichen an das Ende von der Variable result...
-
Wie Thomas schon geschrieben hat, liefert sizeof() nur zur Compilezeit etwas
Richtig wäre:
result[count] = '\0';Außerdem reservierst du 2 Zeichen zu wenig!
Also stattchar *result = new char[count-1];muß es heißen
char *result = new char[count+1];um das Stringende '\0' mit aufnehmen zu können.
-
@Thomas: Vielen Dank schon mal für die schnelle Antwort.
Aber irgendwie kann ich einen String nicht in der Console (mittels cout) anzeigen lassen, da meldet mein Compiler, dass der Operator << strings nicht zugewiesen ist...@Javaner: Einwandfrei, funzt perfekt.
Danke!
-
Gewöhn dir doch mal an, zumindest die entsprechende Code-Zeile zu posten
