019
06.02.2007, 16:34 Uhr
virtual
Sexiest Bit alive (Operator)
|
Zitat von Lensflare: |
Ist std::string eigentlich immer mit 8 bit pro Zeichen kodiert?
|
Nein. Exakt müsste es heißen: std::string arbeitet immer auf einem char, well es ein typedef von std::basic_string<char...> ist. Ein Char wird im C/C++ als die kleinste Adressierbare Einheit angesehen und synoy, mit Byte verwendet. Ein Byte muß - aus verschiedenen Gründen - in C++ mindestens 7 Bit haben. Allerdings ist die Größe nach oben NICHT beschränkt.
Zitat von Lensflare: |
Wenn nicht, dann dürfte wohl s.size() bei anderen Kodierungen nicht die Anzahl an Zeichen ausgeben.
|
Jain.
Ich habe den Standard lange nicht mehr in der Hand gehabt und daher nur wenig konkrete Erinnerungen daran. Meine Vermutung: size() gibt die tatsächliche Byte/Char Größe des Strings zurück, length mehr oder weniger seine logische Größe. Dies können vermutlich unterschiedliche Werte sein, wenn 1. der dem String zugrundeliegende Datentyp was anderes als ein char ist (also wenn man std::wstring verwendet oder so, für Unicode) und/oder 2. man zwar eine char als Datentyp im String hat, die kodierung jedoch manchaml ein oder mehrere physicalische Bytes/Chars zu einem logischen Zeichen zusammenfasst (etwa UTF-8).
Ich bin mir aber wirklich nicht sicher, frag besser jemanden, der sich damit auskennt. -- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21) |