variablen neu initialisieren
-
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.
-
Gabs wirklich schon vorher welche?
Ich denke mal, das ANSI bezieht sich wahrscheinlich auf C und nicht auf C++.
-
aber gab es vor dem aktuellen ANSI noch einen Vorgänger?
wenn nicht, dann unterstützt ja mein C++ ANSI oder?
-
Es gab vorher keinen ANSI-C++-Standard (es gibt eigentlich sowieso keinen, das Standardisierungskommitee sitzt bei der ISO, die ANSI übernimmt den Standard nur), aber es gab eine Arbeitsgruppe, die ihre Ergebnisse regelmäßig veröffentlicht hat.
Unabhängig davon glaube ich, dass die ANSI-Einstellung beim Borland-Compiler sich auf C bezieht. Genau die gleiche gabs nämlich schon bei Borland-C++ 2.0, der ist von ca. 1990 oder 91. Da war die Arbeitsgruppe vielleicht schon aktiv, aber der offizielle Sprachumfang wurde am Referenzcompiler von AT&T bzw. an Stroustrups Büchern festgemacht.