gpt4 book ai didi

c - 带有连续分隔符的 strtok_s 行为

转载 作者:行者123 更新时间:2023-12-02 07:43:12 25 4
gpt4 key购买 nike

我正在并行解析 3 个用特定分隔符分隔的值。

token1 = strtok_s(str1, separator, &nextToken1);
token2 = strtok_s(str2, separator, &nextToken2);
token3 = strtok_s(str3, separator, &nextToken3);

while ((token1 != NULL) && (token2 != NULL) && (token3 != NULL))
{
//...
token1 = strtok_s(NULL, separator, &nextToken1);
token2 = strtok_s(NULL, separator, &nextToken2);
token3 = strtok_s(NULL, separator, &nextToken3);
}

假设“-”是我的分隔符。行为是没有连续分隔符的字符串:

1-2-3-45

将有效地产生以下每个部分:

1
2
3
45

但是,带有两个连续分隔符的字符串:

1-2--3-45

不会产生长度为 0 的字符串,该字符串将被跳过,因此结果为:

1
2
3
45

不是

1
2

3
45

什么解决方法或策略更适合获取所有实际部分,包括 0 长度部分?如果可能,我想避免重新实现 strtok_s。

最佳答案

不幸的是,strtok() 会忽略空标记。即使你说你希望避免这样做,也没有别的办法,只能自己解析它,例如使用 strchr() 找到下一个分隔符,然后将 token 复制到一个临时变量加工。这样您就可以随心所欲地处理空 token 。

关于c - 带有连续分隔符的 strtok_s 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8977836/

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