const std::string &LString::toUtf8() const { if (isEmpty()) return sNullStdString; if (mData->mUtf8String) return *mData->mUtf8String; std::string *utf8 = new std::string(mData->mSize * 4, '\0'); const LChar* fromNext; uint8_t* toNext; bool conversionValid = ucs4ToUtf8(cbegin(), cend(), fromNext, (uint8_t*)&(*utf8)[0], (uint8_t*)&(*utf8)[utf8->size()], toNext); assert(conversionValid); utf8->resize((char*)toNext - &(*utf8)[0]); mData->mUtf8String = utf8; return *mData->mUtf8String; }
vector<char> ucs4_to_utf8(char_type const * ucs4str, size_t ls) { return iconv_convert<char>(ucs4ToUtf8(), ucs4str, ls); }
vector<char> ucs4_to_utf8(char_type c) { return iconv_convert<char>(ucs4ToUtf8(), &c, 1); }