if (char == ?
-
Neku schrieb:
std::string verwende ich nicht, da ich an einer eigenen Klasse arbeite (wofür ich u.a. das strlen verwende).
Wenn du schon eine eigene String Klasse machst, dann wirf C-Strings komplett über Bord. Die haben nur Nachteile. Für deine Zeichensequenz benutzt du ganz gewöhnliche Arrays. Und statt der str... Funktionen die mem... Funktionen. Und falls du doch mal einen C-String brauchst (zB für WinAPI Funktionen), dann biete eine c_string() Funktion an (so wie das auch std::string macht).
Neku schrieb:
Weiß zufällig jemand, welches Format wchar_t verwendet? UTF-16?
wchar_t "verwendet" überhaupt kein Format. Das ist einfach ein integraler Typ mit einer gewissen Anzahl an Bits. Wieviel das sind, ist plattformabhängig. Es wird lediglich garantiert, dass wchar_t so gross wie char ist und einem der anderen integralen Typen (wie zB short oder int) entsprechen muss.
David_pb schrieb:
Das funktioniert aber auch nur bei statischen Stringwerten.
Welches Wort in "String Literal" hast du denn nicht verstanden?
David_pb schrieb:
std::string wiederrum cached die Länge des Strings und kann somit u.U. schnellere Ergebnisse bringen.
Nein, das tut es in diesem Fall nicht. Und warum das so ist, habe ich ja bereits erläutert.
David_pb schrieb:
Was hast du gegen die STL. Die Klassen sind grandios
Naja, grandios ist doch leicht übertrieben. Es gibt schon einige Mankos, die auch hinreichend diskutiert wurden.
David_pb schrieb:
std::string hat aber keinen virtuellen Destruktor, was eine sehr schlechte Vorraussetzung ist für eine Basisklasse!
Aber nicht, wenn non-public vererbt wird.
-
groovemaster schrieb:
Neku schrieb:
std::string verwende ich nicht, da ich an einer eigenen Klasse arbeite (wofür ich u.a. das strlen verwende).
Wenn du schon eine eigene String Klasse machst, dann wirf C-Strings komplett über Bord. Die haben nur Nachteile. Für deine Zeichensequenz benutzt du ganz gewöhnliche Arrays. Und statt der str... Funktionen die mem... Funktionen. Und falls du doch mal einen C-String brauchst (zB für WinAPI Funktionen), dann biete eine c_string() Funktion an (so wie das auch std::string macht).
Intern habe ich auch keinen C-String mehr - mir geht es nur um die Zuweisung eines C-Strings an meine Klasse, welcher dann automatisch in einem 2-Byte-String gespeichert wird. Bin mir noch gar nicht sicher, ob ich generell für alle Codierungen (ASCII, ISO-8859, Unicode) 2-Byte-Strings verwenden soll. Kommt drauf an, ob ich auch noch UTF-32 erlauben will.
Soll ich, wenn ich eine Stringklasse mit Unicode-Support erstelle nur UTF-16 verwenden oder sämtliche Möglichkeiten erlauben? (UTF-(8/16/32)(LE/BE))