static std::string get_string_from_utf16(const char16_t* input, int input_len) { ssize_t utf8_length = utf16_to_utf8_length(input, input_len); if (utf8_length <= 0) { return {}; } std::string utf8; utf8.resize(utf8_length); utf16_to_utf8(input, input_len, &*utf8.begin(), utf8_length + 1); return utf8; }
std::string utf16ToUtf8(const StringPiece16& utf16) { ssize_t utf8Length = utf16_to_utf8_length(utf16.data(), utf16.length()); if (utf8Length <= 0) { return {}; } std::string utf8; utf8.resize(utf8Length); utf16_to_utf8(utf16.data(), utf16.length(), &*utf8.begin()); return utf8; }
static char* allocFromUTF16(const char16_t* in, size_t len) { if (len == 0) return getEmptyString(); const ssize_t bytes = utf16_to_utf8_length(in, len); if (bytes < 0) { return getEmptyString(); } SharedBuffer* buf = SharedBuffer::alloc(bytes+1); if (!buf) { return getEmptyString(); } char* str = (char*)buf->data(); utf16_to_utf8(in, len, str); return str; }
static char* allocFromUTF16(const char16_t* in, size_t len) { if (len == 0) return getEmptyString(); // Allow for closing '\0' const ssize_t resultStrLen = utf16_to_utf8_length(in, len) + 1; if (resultStrLen < 1) { return getEmptyString(); } SharedBuffer* buf = SharedBuffer::alloc(resultStrLen); ALOG_ASSERT(buf, "Unable to allocate shared buffer"); if (!buf) { return getEmptyString(); } char* resultStr = (char*)buf->data(); utf16_to_utf8(in, len, resultStr, resultStrLen); return resultStr; }