variablen neu initialisieren
-
snake4ever schrieb:
geht aber beides, also seh ich irgendwie keinen grund den namespace zu verwenden...
Vielleicht geht es, weil dein Compiler so intelligent ist und auch den std namespace automatisch mitbenutzt, aber normalerweise geht dies nicht!
Und Möglichkeiten von C++ nicht zu verwenden, die einem das Leben wirklich einfacher machen können, find ich persönlich wiederum nicht sooo, sagen wir mal, gut... Aber noch viel schlimmer finde ich falschen code, wie es nman schon gesagt hat, das geht so nicht. (normalerweise und bei anderen namespaces schon gar nicht).EDIT: Mir ist gerade aufgefallen, dass du auch einfach string.h eingebunden haben könntest, das liegt natürlich nicht im Namensraum std, sollte aber auch nicht verwendet werden! Also nimm #include <string> bzw <cstring> als C Gegenstück.
-
ist es eigentlich noch zeitgemäß in C++ mit chars, strcat und strcpy etc zu arbeiten?
oder sollte man lieber die string klasse nehmen? etliche vorteile haben sie ja, aber sind sie auch schnell genug?
-
1. Nein, es ist nicht zeitgemäß, das ist halt C und nicht C++
2. String ist mindestens genauso schnell, als wenn du dir das alles selber implementierst.
(bis auf kleine Ausnahmen und auch nicht sooo riesige Unterschiede).
Der größte Vorteil ist halt der Komfort und die Sicherheit, die du hast, im Gegensatz dazu, wenn due mit rohen Zeigern u.ä. arbeitest.
-
ok, dann lass ich jetzt die finger von den bösen chars
-
Gut so
Und denk aber auch an den Namensraum!Lies dazu nochmal eine Seite vorher meinen letzten Betrag, den hab ich nochmal editiert.
So, schönen Abend noch und viel Spaß damit :pPS: Warum gibts in C++ eigentlich nicht sowas wie byte in C#? Dann bräuchte man die chars wirklich nicht mehr :p
-
ja, du meinst, wenn man nur eine ziffer brauchst...dafür brauch man in der tat char[1];
vielen dank für deine/eure hilfe
-
snake4ever schrieb:
ist es eigentlich noch zeitgemäß in C++ mit chars, strcat und strcpy etc zu arbeiten?
Wenn es um Stringmanipulation geht, dann ist std::string und co. auf jedenfall vorzuziehen. Für konstante Strings reichen char Zeiger vollkommen aus
const char* s = "Hallo Welt!";
-
warum benutzt man zeiger und keine normalen chars?
also
const char* s="Hallo Welt!"; //statt const char s[11]="Hallo Welt!";
weil man sich nicht um die größe kümmern muss?
-
Du könntest auch const char[] = "Hallo Welt"; schreiben, ist alles das gleiche
-
viande schrieb:
PS: Warum gibts in C++ eigentlich nicht sowas wie byte in C#? Dann bräuchte man die chars wirklich nicht mehr :p
typedef char byte;
-
MaSTaH schrieb:
viande schrieb:
PS: Warum gibts in C++ eigentlich nicht sowas wie byte in C#? Dann bräuchte man die chars wirklich nicht mehr :p
typedef char byte;
Die Idee ist gar nicht schlecht, so einfach hab ich da nie gedacht
Ist bei manchen Sachen einfach einleuchtender.
Wenn ich zB 1024 byte verschlüsseln will, will ich halt nicht 1024 Buchstaben verschlüsseln :p
-
viande schrieb:
Du könntest auch const char[] = "Hallo Welt"; schreiben, ist alles das gleiche
Nicht ganz. Das hab ich bei dem unsized Array bis vor kurzem nämlich auch geglaubt. Fakt ist, dass die Zeigerform direkt auf das Literal verweist. Folgendes führt demzufolge zu undefiniertem Verhalten
char* s = "Hallo Welt!"; s[1] = 'e';
Die Array Schreibweisen hingegen verwenden eine Kopie, falls erforderlich. Demzufolge ist folgendes korrekt
char s[] = "Hallo Welt!"; s[1] = 'e';
-
Liegt das nicht daran, dass das ganze const ist, wenn man beim kompilieren, einen String auf die Art initialisiert?
Wenn ich damit jetzt falsch liege, lasse ich mich aber gerne eines besseren belehren
-
typedef unsigned char BYTE
würd ich machen
-
viande schrieb:
Liegt das nicht daran, dass das ganze const ist, wenn man beim kompilieren, einen String auf die Art initialisiert?
Nun, es liegt einfach daran, dass String Literale nicht geändert werden dürfen, also read-only sind.
-
eine kleine Frage: hat Borland C++ 5.02 eigentlich auch schon den ANSI-Standard?
-
groovemaster schrieb:
viande schrieb:
Liegt das nicht daran, dass das ganze const ist, wenn man beim kompilieren, einen String auf die Art initialisiert?
Nun, es liegt einfach daran, dass String Literale nicht geändert werden dürfen, also read-only sind.
Das mein ich ja
Sie sind halt konstant :p
-
snake4ever schrieb:
eine kleine Frage: hat Borland C++ 5.02 eigentlich auch schon den ANSI-Standard?
Kaum vorstellbar, da der Compiler ja von 1996 oder so ist.
-
also ich glaub 97, aber was mich wundert ist, dass ich beim compiler folgendes einstellen kann:
-
Wieso wundert dich das? Es gab ja auch vor den aktuellen C/C++ Standards schon welche. Auch wenn das mittlerweile ISO abgesegnet ist, und nicht mehr auf ANSI beschränkt ist.