Milian Wolff wrote: > It can, indeed. But funnily enough it's not going to be much faster, at > least in the tests I did. Still, one should probably be doing this > anyways. I'll try to dig up my patch for that and sent it to Gerrit. It's > a pity that one cannot just convert a const char* to a QChar directly, > i.e. without any allocations. One cannot even reuse the same QString > buffer to my knowledge...
Why not something like this? QChar getQChar(const char *p) { unsigned short uc = 0; char c = *(p++); if (c < -64) // invalid UTF-8 uc = 0; else if (c < -32) { // 2 chars uc = ((unsigned short) (c & 31)) << 6; c = *(p++); if (c >= 0) uc = 0; // error (ASCII or end of string as continuation char) else uc |= (unsigned short) (c & 63); } else if (c < -16) { // 3 chars uc = ((unsigned short) (c & 15)) << 12; c = *(p++); if (c >= 0) uc = 0; // error (ASCII or end of string as continuation char) else { uc |= ((unsigned short) (c & 63)) << 6; c = *(p++); if (c >= 0) uc = 0; // error (ASCII or end of string as continuation char) else uc |= (unsigned short) (c & 63); } } else if (c < 0) // 4 chars, codepoint above 65536, would need 2 QChars uc = 0; else uc = c; return QChar(uc); } Kevin Kofler _______________________________________________ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development