digitalmars.D.bugs - doFormat counts bytes, not characters
- Nick (67/68) Feb 09 2005 When calculating padding, doFormat counts the number of bytes in the str...
When calculating padding, doFormat counts the number of bytes in the string, not
hte number of characters. UTF-8 strings containing multibyte characters are
padded wrong.
A quick and dirty fix is to apply the following to format.d:
141c141
< int padding = field_width - (strlen(prefix) + s.length);
---
int padding = field_width - (strlen(prefix) + toUTF32(s).length);
Another better solution to add functions to std.utf for counting the number of
characters in a string. This is slightly faster and avoids unnecessary memory
allocation.
One possible way to do this (for UTF-8) follows below. It's basically a stripped
down version of decode().
Nick
Feb 09 2005








Nick <Nick_member pathlink.com>