Ansi/Unicode in eigener Bibliothek
-
Hallo,
ich habe unter Windows eine kleine Bibliothek geschrieben, welche unter anderem Strings manipulieren kann. Dabei habe ich strikt auf Unicode(wchar_t, 2Bytes) gesetzt und hatte damit, egal was ich gemacht habe, nie Probleme gehabt, weil Windows nun eben im Kern auch Unicode mag

Jetzt bin ich aber auf die Linux-Seite gewechselt. Dort ist ein wchar_t nun aber 4Bytes groß. Bis jetzt habe ich immer Unicode verwendet, weil 1Byte mehr gegenüber Ansi in der heutigen Zeit nicht mehr das große Problem darstellt(PC). Aber gleich 4Bytes, wobei in den meisten Fällen eh nur 1Byte davon verwendet wird... das halte ich dann doch für etwas zu viel, wie denkt ihr darüber?
Ich muss natürlich meine Bibliothek entsprechend anpassen. Habe zunächst daran gedacht, für jede Funktion eine *A und *W Variante ala WinAPI anzubieten, wobei ich die *W dann implementiere und die *A als Wrapper benutze.
Je nach String(oder StringArray) wird dann aber auch wieder ziemlich viel Speicher "verschwendet". Wäre es sinnvoll, das ganze so weit wie möglich per typedef XXX tchar dynamisch zu halten?Wie löst ihr solche Probleme, und welches CharSet verwendet ihr unter Linux?
Schöne Grüße
-
Sinnvoll wäre wohl eher, den String als Template zu machen, bei dem unter anderem der Zeichentyp ein Templateparameter ist. Also genau so wie std::string und std::wstring aus der Standardbibliothek, die jeweils typedefs von std::basic_string<char> bzw. std::basic_string<wchar_t> sind.
Dann wird als nächste Problem sicherlich auftauchen, dass du die Eigenschaften der Zeichen (char_traits) abhängig vom Zeichentyp machen musst. Das machst du dann auch so wie std::basic_string aus der Standardbibliothek, der die char_traits als weiteren Templateparameter (Defaultwert die Standard-char_traits des Zeichentyps) nimmt.
So ist das eben, wenn man selber macht, was es schon lange gibt: Am Ende macht man bloß alles in schlechter nach :p .
Unter Linux benutzt jeder normale Mensch UTF-8. Also char als Zeichentyp.
-
-
SeppJ schrieb:
Sinnvoll wäre wohl eher, den String als Template zu machen
Habe ich auch dran gedacht...
SeppJ schrieb:
So ist das eben, wenn man selber macht, was es schon lange gibt
Ja stimmt, aber die Bibliothek ist ein Hobby-Projekt, deshalb mache ich das

theta schrieb:
Damit kann ich leben
