D
teremy schrieb:
Ich meine tatsächlich im Kopf zu haben, dass es behauptet, dass es keinen String-Typ in C++ gibt, sondern Strings schlichtweg Arrays aus Zeichen sind. Aber kann ja sein, dass das später nochmal auftaucht.
Das stimmt auf eine Art schon, aber ein gutes Buch hätte im gleichen Satz erwähnt, dass es std::string gibt, welche den Standardstring in C++ darstellt.
Nur weil das jetzt kein direktes Feature der Sprache ist, heisst nicht, dass man die Stringklasse (oder besser template) nicht benutzen darf. Es macht durchaus Sinn eine Stringklasse nicht direkt in der Sprache zu implementieren, weil es unnötig ist, da ein string auch nur eine Abstraktion ist. Es ist eine Menge von aneinanderhängender Buchstaben. Und dafür kann man verschiedene Implementierungen vorschlagen, je nach Anforderung und da die Sprache auf einen eingebauten Typen festzulegen macht imo nicht viel Sinn.
Als Anfänger sollte man sich nicht mit Probleme umschlagen müssen, wie das zuweisen eines char Arrays an ein anderes, was nicht so intuitiv ist, wie viele zuerst meinen. Darum wird Anfängern hier stets geraten die Standardbibliothek und deren Mittel, wie std::string anstatt ein Array von char's oder std::vector anstatt ein Array von irgendwas zu benutzen.
Später wirst du dann auch das Verständnis bekommen, wie Array funktionieren, warum man da nicht so einfach zuweisen kann und warum sie eine feste Grösse haben. Und dir wird dann das korrekte Einsatzgebiet davon klarer. Und dann wirst du ebenfalls jedem Anfänger abraten das mit Arrays zu machen.
Nichts desto trotz verstehe ich durchaus, dass du lernen willst, die Arrays funktionieren und wo deine Denkfehler waren. (ich habe am Anfang genau gleich gedacht.)
Es funktioniert jetzt mittlerweile übrigens. Der Code ging tatsächlich, das Problem lag darin, dass ich strcpy() und auch sprintf() etc. außerhalb von "int main(void){...}" geschrieben hatte. Also nach "using namespace std;" wo ich auch ein paar Variablen definiere, da habe ich gleich meinen Code geschrieben.
Hehe. Darum poste doch, wenn möglich immer den realen Code. Wie du siehst können lediglich Ausschnitte des Codes mit Fehlermeldung recht Verwirrung stiften, wenn man den Zusammenhang nicht kennt. Wenn wir den gesamten Code gesehen hätten, dann hätten wir dir das gleich sagen können.
(Wenn möglich reduzier den Code aber auf das wesentliche, wo der Fehler noch drin steckt.)
Warum das nicht geht, ist denke ich klar, odre? - Die Ausführung des Codes fängt in der main an und hört am Ende der main auf. Alles ausserhalb ist kein ausgeführter Code in dem Sinne, sondern lediglich Definition, Deklaration o.ä.