?
evilplayground schrieb:
Für mich sieht die ganze Casterei zwar immer nach ein bisschen overhead aus, da ich nur strings und chars gewöhnt bin, und damit auch nur Methoden und Klassen die solche als Parameter erwarten. Aber damit muss ich wohl leben
Das hat nun mal seinen Grund. C ist eine schnelle, systemnahe Sprache (meine sogar, mich erinnern zu können, dass man mit dem Befehl asm Assemblercode in C-Code einfügen kann), und deshalb muss man sich auch stark mit dem jeweiligen System beschäftigen. Der Vorteil einer solchen Sprache kommt vor allem bei großen Projekten (wie zum Beispiel Grafik-Engines) hervor, denn diese sind sehr viel schneller als z.B. eine Engine in C# oder Visual Basic (:D stellt euch das mal vor).
Wenn man speicherschonend programmieren will, sollte man bei Multibytes bleiben, denn dort kann man sicher sein, dass JEDES Byte gebraucht wird - im Gegensatz zu Wide-Char, wo oft nur ein Byte gebraucht wird und der Rest hinten dranhängt. Für die Lokalisierung kannst du dann einfach die Codepage wechseln und eine neue Stringtable anlegen, die die Zeichen arbeitet ... glaube ich zumindest. Ich beherrsche zwar ein bisschen japanisch, aber eine Lokalisierung musste ich noch nicht schreiben - ich stelle mir aber vor, dass es die reine Folter ist, denn ich meine gelesen zu haben, dass Codepage 932 nur japanische Kanji, aber Katakana und Hiragana nicht kennt. Und japanisch NUR in Kanji ...
Da ist Wide-Char besser. Dort hat jedes Zeichen einen Wert (manchmal sogar zwei), und auch die elbischen Zeichen von J.R.R.Tolkien sind dort definiert. Nix mit verrückten Codepagewechsel, einfach den Mischmasch aus japanischem Brei da rein und fertig. Allerdings wird dies für die meisten Alphabete bis zu 50% Speicher verschwenden (bei 2 Byte, es gibt aber noch UTF-32 ... rechne es dir selbst aus, ich meine gelesen zu haben, dass nur 27% des Speichers so gebraucht wird). Bei einem großen Projekt mit einer riesigen Stringtable ... nochmal .
Du musst also selbst entscheiden, was du verwenden willst. Das ist ja das Mächtige an C - du kannst auch Sachen machen, die unter normalen Umständen Unsinn, aber in einer gewissen Situation essenziell für ein Programm sind.