Warum als Parameter häufig char* statt std::string?
-
Hallo,
ich sehe häufig in C++ Codes, dass ein C-String (char*) als Parameter benutzt wird.
Beispiel:
Funktion(char* irgendwas)
statt
Funktion(std::string irgendwas)
Letzteres sehe ich so gut wie nie. Daher frage ich mich, warum ist das so? Ergeben sich bei C++ Strings als Parameter irgendwelche Nachteile?
-
Meine Vermutung: Die Betroffenen sind JW-geschädigt und kennen es nicht anders
btw, wenn überhaupt, dann sollte man es schon vernünftig machen:
Funktion(const std::string& parameter);
-
Korrigiert mich wenn ich falsch liege, aber in modernen Anwendungen ist Unicode eigentlich ein must-have und beide hier gezeigten Varianten genügen nicht?
MfG SideWinder
-
@SideWinder: Streng genommen ist wchar_t kein einheitlicher Unicode.
Unter Windows mag wchar_t zwar verlockend sein, aber wenn man Cross-Platform entwickelt,
schießt man sich damit ins Knie.In diesem Fall ist tatsächlich ein char * angemessener.
Unter Linux wird z.B. bevorzugt auf UTF8 gesetzt, was sich wunderbar mit char * verarbeiten lässt.Außerdem sind meiner Meinung nach ab C++11 sowohl std::string als auch std::wstring obsolete.
Hier ist dann doch eher u16string und u32string zu empfehlen, da hier die Kodierungen standardisiert sind.Fehlt nur noch die Implementation sowohl in der Sprache als auch in der Standard-Bibliothek.