gpt4 book ai didi

c++ - 字符集感知测试,如 isalpha() 等和迭代器 - 有这样的东西吗?

转载 作者:行者123 更新时间:2023-11-30 04:38:05 26 4
gpt4 key购买 nike

我得到一个字符串和编码字符集,比如 iso_8859-1utf-8 等。我需要扫描字符串并将其标记为单词,因为我会使用 isspace()ispunc()

是否有考虑字符集的字符测试函数?另外,是否有推进正确字节数的迭代器?

注意:
我知道我可以将字符串转换为 utf8,然后使用 Glib::ustring 及其工具。我想知道我是否可以避免这种情况。

最佳答案

如果您想不惜一切代价避免转换,则必须编写一堆不同的例程:

static void handle_iso_8859_1(const char *);
static void handle_iso_8859_15(const char *);
static void handle_utf_8(const char *);

static void handle_string(const char *s, const char *encoding) {

if (strcmp(encoding, "ISO-8859-1") == 0) {
handle_iso_8859_1(s);
} else if (strcmp(encoding, "ISO-8859-15") == 0) {
handle_iso_8859_15(s);
} else if (strcmp(encoding, "UTF-8") == 0) {
handle_utf_8(s);
} else {
error("unknown encoding: %s", encoding);
}
}

为什么首先要避免转换?是不是太贵了?真的太贵了吗?从 ISO-8859-1 转换为 UTF-8 非常便宜且容易做到。嗯,也许你需要一个额外的内存分配和一些字节的复制。但这真的值得将几乎相同的代码编写三次(或更多次)吗?

关于c++ - 字符集感知测试,如 isalpha() 等和迭代器 - 有这样的东西吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3344833/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com