28#ifndef UTF8_FOR_CPP_7e906c01_03a3_4daf_b420_ea7ea952b3c9
29#define UTF8_FOR_CPP_7e906c01_03a3_4daf_b420_ea7ea952b3c9
37 inline void append(
char32_t cp, std::string& s)
42 inline std::string
utf16to8(std::u16string_view s)
45 utf16to8(s.begin(), s.end(), std::back_inserter(result));
49 inline std::u16string
utf8to16(std::string_view s)
51 std::u16string result;
52 utf8to16(s.begin(), s.end(), std::back_inserter(result));
56 inline std::string
utf32to8(std::u32string_view s)
59 utf32to8(s.begin(), s.end(), std::back_inserter(result));
63 inline std::u32string
utf8to32(std::string_view s)
65 std::u32string result;
66 utf8to32(s.begin(), s.end(), std::back_inserter(result));
72 std::string_view::const_iterator invalid =
find_invalid(s.begin(), s.end());
73 return (invalid == s.end()) ? std::string_view::npos :
static_cast<std::size_t
>(invalid - s.begin());
84 replace_invalid(s.begin(), s.end(), std::back_inserter(result), replacement);
output_iterator replace_invalid(octet_iterator start, octet_iterator end, output_iterator out, uint32_t replacement)
Definition checked.h:83
octet_iterator append(uint32_t cp, octet_iterator result)
The library API - functions intended to be called by the users.
Definition checked.h:74
bool starts_with_bom(octet_iterator it, octet_iterator end)
Definition core.h:375
octet_iterator utf32to8(u32bit_iterator start, u32bit_iterator end, octet_iterator result)
Definition checked.h:231
u16bit_iterator utf8to16(octet_iterator start, octet_iterator end, u16bit_iterator result)
Definition checked.h:216
u32bit_iterator utf8to32(octet_iterator start, octet_iterator end, u32bit_iterator result)
Definition checked.h:240
unsigned int uint32_t
Definition core.h:57
octet_iterator utf16to8(u16bit_iterator start, u16bit_iterator end, octet_iterator result)
Definition checked.h:189
bool is_valid(octet_iterator start, octet_iterator end)
Definition core.h:369
octet_iterator find_invalid(octet_iterator start, octet_iterator end)
Definition core.h:357