On 21.09.2011 01:57, Christophe wrote:
size_t myCount(string text) { size_t n = text.length; for (uint i=0; i<text.length; ++i) { auto s = text[i]>>6; n -= (s>>1) - ((s+1)>>2); } return n; }
Here is a more readable and a bit faster version on dmd windows: size_t utfCount(string text) { size_t n = 0; for (uint i=0; i<text.length; ++i) n += ((text[i]>>6)^0b10)? 1: 0; return n; }