我想提取首次出现" /"
后存在的字符串例如,有一个char *卡,其形式为:
hw:0/Line
default/Master
我需要char *频道(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字符串实用程序函数执行此操作?
答案 0 :(得分:2)
strcspn
和strlen
出了什么问题?
GLib重新实现了很多东西C99和POSIX,因为它针对的是C89编译器。它不会重新实现strlen
或strcspn
之类的内容,因为它们不需要 - 它们位于C89中。
GLib也倾向于实现许多函数的UTF-8版本,虽然有g_utf8_strlen
我不知道g_utf8_strcspn
我认为这不是真的有必要案件。如果是,那么您可能必须通过使用g_utf8_next_char
遍历字符串并检查g_utf8_get_char
或g_utf8_get_char_validated
的结果来自行实现。