Glib 字符串实用函数(相当于 strcspn)

Glib string utility functions (echivalent for strcspn)

我想提取第一次出现“/”后存在的字符串

例如,a 有一个以下形式之一的 char *card:

    hw:0/Line

    default/Master

我需要 char *channel (Line, Master, ...)

在标准 C 中可以使用 "strcspn" 和 "strlen"

    char *card, *channel;
    int i;

    i = strcspn(card, "/");
    if (i == strlen(card)) {
        channel = "Master";
    } else {
        card[i] = 0;
        channel = card + i + 1;
    }

如何使用 glib 字符串实用程序函数执行此操作?

strcspnstrlen 有什么问题?

GLib 重新实现了很多 C99 和 POSIX 的东西,因为它针对 C89 编译器。它不会重新实现 strlenstrcspn 之类的东西,因为没有必要——它们在 C89 中。

GLib 也倾向于实现很多函数的 UTF-8 版本,虽然有一个 g_utf8_strlen 我不知道 g_utf8_strcspn 我认为这不是真的必要在这种情况下。如果是,那么您可能必须自己实现它,方法是使用 g_utf8_next_char 遍历字符串并检查 g_utf8_get_charg_utf8_get_char_validated.

的结果