Ein Zuweisungsoperator für Strings schreiben - wie?
-
Aber erweitern geht sicher nicht, wstring ist ein fixer typedef auf std::basic_string<wchar_t>.
Also wenn dann nur global.
-
Oh, dann müsste ich ja am Quellcode der Standardbibliothek rumdoktern. Das ist wohl nicht so gut, ne.
-
Orgienisator schrieb:
Aber erweitern geht sicher nicht, wstring ist ein fixer typedef auf std::basic_string<wchar_t>.
Also wenn dann nur global.Und ein Blick in meinen Prinz verrät mir dass
op=
op[]
op()
op->
nur als Memberfunktionen überladbar sind, also nix mit Global.
-
Orgienisator schrieb:
Und ein Blick in meinen Prinz verrät mir dass
op=
op[]
op()
op->
nur als Memberfunktionen überladbar sind, also nix mit Global.Schei...se stimmt.
-
Und wie wäre es mit einem anderen Operator?
-
operat0r schrieb:
Oh, dann müsste ich ja am Quellcode der Standardbibliothek rumdoktern. Das ist wohl nicht so gut, ne.
Hmmm...oder ich müsste nen neuen Stringtypen einführen und diesem dann die neuen Operatoren spendieren ... hmm... son einfacher Funktionsaufruf ist dann wohl doch weniger aufwendig, ne.
-
DeepCopy schrieb:
Und wie wäre es mit einem anderen Operator?
Weiss nicht, eventuell ein bisschen verwirrend/unüblich?
-
Beim Ableiten der Klasse würde deutlich mehr Aufwand entstehen, Konstruktoren, Destruktoren, Zuweisungsoperatoren und friend Deklarationen müssten mitgeschliffen werden.
Als Operator könnte ich mir einen der Bit-Shifter Operatoren vorstellen, also:
string s; wstring w; w << s; // würde vom Compiler auch vom Transfer-Operator unterschieden werden.
Der Code dazu könnte so aussehen:
wstring& operator<<(wstring& w, string& s) { if (s.empty()) return w); utf8_to_wchar_t (s, w); return w; }
PS:
Weiss nicht, eventuell ein bisschen verwirrend/unüblich?
Was in C++ ist nicht verwirrend/unüblich
-
Mir ist da noch was eingefallen warum auf den Zuweisungsoperator schauen.
Eine globale Funktion tut es doch (fast) genauso.
wstring& UToW(wstring& w, string& s) { if (s.empty()) return w; utf8_to_wchar_t (s, w); return w; }
aber nur ein Vorschlag, soll dich nicht von der Operator-Schiene wegbringen.
Ich weiss ist lange nicht so schön wie ein Zuweisungsoperator, aber vielleicht gefällt dir ja mein letzter Vorschlag.
-
DeepCopy schrieb:
PS:
Weiss nicht, eventuell ein bisschen verwirrend/unüblich?
Was in C++ ist nicht verwirrend/unüblich
Stimmt, das Verwirrdende ist in C++ üblich. Ich werde über deinen Vorschlag nachdenken. Vielen Dank für deine Beteiligung, auch an Orgienasit0r