strcpy was not declared
-
in C++ nimmt man std::string, ist eine Klasse die sich auch um die Speicherverwaltung kümmert. Du wirst sehen, dass std::string viel leichter zu verwenden ist als C Strings.
-
master97 schrieb:
Und wenn du ein Programm in DevC++ erstellst mit folgendem Code
#include <iostream> int main() { char temp[512]; strcpy(temp, "Hello world!"); std::cout << temp << "\n"; return 0; }Bin ich mir sicher, dass du kein CString includen musst.
Wie sieht die c++ Variante denn aus?
Du hast recht was Dev-Cpp bis Version 4.9.9.2 angeht. Und das bezieht sich nicht nur auf den Header
cstring, sondern auch auf andere. Bei den Compilern, die Dev-Cpp bis zu dieser Version mitliefert, musste man "fast" gar nichts inkludieren, irgendwo kamen die Header schon her.
In der Uni mussten wir auch das alte Dev-Cpp nutzen und als ich dann privat auf Visual Studio wechselte, war ich auch erstmal erstaunt, wie viele Header ich zu inkludieren hatte.
-
Das Netz hier im Norden ist echt dreckig.

Sorry für meine späte Antwort.Also erstmal danke an alle

Ich werde Wohl, so wies scheint, CString inkludieren müssen.
Meine Frage war allerdings, warum ich dies neuerdings muss. Es muss eine Einstellung in CodeBlocks sein (ich glaub mein DevC++ Beispiel war blöd), denn es ging. Sonst hätte ich ja nicht dutzende fertige Projekte, wo ich die besagten Funktionen nutze, aber CString nicht inkludiert habe und trotzdem die Binaries erzeugen konnte...
Ich meine es war irgendne C++00 oder 0x Einstellung. Wer dazu was weiß, kann ja kurz hier Antworten.Ansonsten danke und nochwas: ich werd wohl ne eigene String-Klasse schreiben müssen, da viele Funktionen in der C++-String Klasse gar nicht vorhanden sind (bspw. replace o.Ä.).
Danke nochmal und schönen Abend noch

-
master97 schrieb:
...
Nene, das liegt einfach daran, dass du vorher ältere Compiler benutzt hast. Richtig ist, wenn du etwas inkludieren musst. Wenn du etwas nicht inkludieren musst, ist es suspekt.
-
master97 schrieb:
da viele Funktionen in der C++-String Klasse gar nicht vorhanden sind (bspw. replace o.Ä.).
http://www.cplusplus.com/reference/string/string/replace/
http://www.cplusplus.com/reference/algorithm/replace/
-
Okok, und wo kann ich das wieder einstellen oder immer automatisch cstring inkludiert wird?
-
warum schreibst du nicht einfach #include <cstring> ?? das ist doch kein aufwand ??außerdem wirst du hier niemand antreffen, der nen kompiler von 2005 (?) benutzt.
-
Hoffentlich nirgendwo. Du programmierst in C++. Im C++-Standard (Definition der Sprache) steht, dass du <cstring> includen solst wenn du strcpy verwenden willst. Selbst wenn es bei dir zufällig (Compilerspezifisches Verhalten) trotzdem ohne ging, solltest du es trotzdem machen. Wenn du irgendwo einstellst, dass es automatisch includiert wird, würde dein Programm nur unter deinen eigenen Compiler-Einstellungen funktionieren, wäre aber generell ein fehlerhaftes Programm.
Schreib einfach jedes mal #include <cstring> oben hin wenn du strcpy verwenden willst. Bei deinem neuen Programm kannst du das ja auch einfach aus einem vorherigen rüberkopieren. Oder du machst dir irgendeine default.h, in der du alle deine includes machst, und die dann jedes mal includest.
bzw: Auch ich empfehle dir, dir std::string anzugucken und es dir erstmal nicht weiterhin unnötig schwer zu machen, und mit C-Strings rumzuwurschteln.
-
Dobi schrieb:
Im C++-Standard (Definition der Sprache) steht, dass du <cstring> includen solst wenn du strcpy verwenden willst.
Im Standard steht nicht nur, dass du das sollst, sondern dass du das musst. Abgesehen davon heißt es laut C++ Standard std::strcpy() und nicht einfach nur strcpy()

Dobi schrieb:
bzw: Auch ich empfehle dir, dir std::string anzugucken und es dir erstmal nicht weiterhin unnötig schwer zu machen, und mit C-Strings rumzuwurschteln.
+1

-
Ich habe noch nie das Bedürfnis verspürt, strcpy zu verwenden. Kann natürlich auch sein, dass ich einfach nur vergesslich bin, aber das ist eher unwahrscheinlich.