Pewarta Proxy

๐Ÿ“‹ Server Request & Proxy Logs

Loading active proxy settings...
Developed by Khairul Adha (adhexa.id)
Mengambil log server...

โš™๏ธ Pengaturan Proxy Target

Skip to content

About

C++17 and C++11 std::string-and-std::string_view-based utils.

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Latest commit

ย 

History

15 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

C++ String Utils

C++17 and C++11 std::string-and-std::string_view-based UTF-8-based utils.
https://utf8everywhere.org/

to_string

u8string buffer(32, '\0');
u8string_view result = utils::to_string(12.34f, buffer);
assert(!result.empty());
assert(result == "12.34");
u8string buffer(32, '\0');
u8string_view result = utils::to_string(0xDEADBEEF, buffer, true);
assert(!result.empty());
assert(result == "deadbeef");

from_string

float f32 = 0.0f;
assert(utils::from_string("12.34", f32));
assert(f32 == 12.34f);
uint32_t u32 = 0;
assert(utils::from_string("DEADBEEF", u32, true));
assert(u32 == 0xDEADBEEF);
assert(utils::from_string("deadbeef", u32, true));
assert(u32 == 0xDEADBEEF);

trimm

assert(u8string_view("\n 12.34 \t").trim() == "12.34")
assert(u8string_view(u8" | ๐ŸŒ | ").trim("|") == u8"๐ŸŒ");
assert(u8string_view(u8"<span\>>๐Ÿ˜€</span>").trim('<', '>') == u8"๐Ÿ˜€");

split

u8string_view(u8"|12||๐ŸŒ|34|5\\|6|").split("|", [](u8string_view part, uint32_t idx) {
    switch (idx) {
    case 0: assert(part == "12"); break;
    case 1: assert(part == u8"๐ŸŒ"); break;
    case 2: assert(part == "34"); break;
    case 3: assert(part == "5\\|6"); break;
    default: assert(false); break;
    }
});

std::array<u8string_view, 4> parts;
u8string_view(u8"|12||๐ŸŒ|34|5\\|6|").split("|", parts);
assert(parts[0] == "12");
assert(parts[1] == u8"๐ŸŒ");
assert(parts[2] == "34");
assert(parts[3] == "5\\|6");

slice

u8string_view u8strv = "ABCDEFGHIJ";
assert(u8strv.slice(2, 6) == "CDEF");
assert(u8strv.slice(-3) == "HIJ");
assert(u8strv.slice(0, -2) == "ABCDEFGH");
assert(u8strv.slice(-5, -2) == "FGH");

u8strv = u8"A๐ŸŒCะ”EะคGH๐Ÿ˜€J";
assert(u8strv.slice_cp(2, 6) == u8"Cะ”Eะค");
assert(u8strv.slice_cp(-3) == u8"H๐Ÿ˜€J");
assert(u8strv.slice_cp(0, -2) == u8"A๐ŸŒCะ”EะคGH");
assert(u8strv.slice_cp(-5, -2) == u8"ะคGH");

substr

constexpr u8string_view str = "user@email.com";
size_t offset = 0;
u8string_view user = utils::substr(str, offset, "@");
assert(user == "user");
u8string_view email = utils::substr(str, offset, ".");
assert(email == "email");
u8string_view com = utils::substr(str, offset, ".");
assert(com == "com");

conversion

u8string u8str;
u16string u16str;
u32string u32str;

u8str = u8"๐ŸŒ";
assert(u8str.size_B() == 4);
assert(u8str.size_cu() == 4);
assert(u8str.size_cp() == 1);

u8str = u8"ไฝ ๅฅฝ Hola Hello Olรก ๐Ÿ˜€ ะŸั€ะธะฒะตั‚ ใ“ใ‚“ใซใกใฏ ์•ˆ๋…•ํ•˜์„ธ์š” Bonjour Hallo Ciao";
assert(u8str.size_B() == 91);
assert(u8str.size_cu() == 91);
assert(u8str.size_cp() == 57);

u16str = u8str.toUtf16();
assert(u16str.size_B() == 116);
assert(u16str.size_cu() == 58);
assert(u16str.size_cp() == 57);
assert(u16str.toUtf8() == u8str);
assert(u16str.toUtf32().toUtf8() == u8str);

u32str = u8str.toUtf32();
assert(u32str.size_B() == 228);
assert(u32str.size_cu() == 57);
assert(u32str.size_cp() == 57);
assert(u32str.toUtf8() == u8str);
assert(u32str.toUtf16().toUtf8() == u8str);

std::string-compatibility

std::map<u8string, int32_t> map;
std::map<u8string_view, int32_t> map;
std::unordered_map<u8string, int32_t> map;
std::unordered_map<u8string_view, int32_t> map;

std::regex re(u8string(u8"รค+"));
assert(std::regex_search(u8string(u8"รคbc"), re));
assert(not std::regex_search("abc", re));

etc...

About

C++17 and C++11 std::string-and-std::string_view-based utils.

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages