我正在并行解析 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
and not
1
2
3
45
什么解决方法或策略更适合获取所有实际部分,包括 0 长度的部分?如果可能的话,我想避免重新实现 strtok_s 。
很遗憾,strtok()
忽略空标记。尽管您说您希望避免这样做,但除了自己解析它之外别无他法,例如使用strchr()
查找下一个分隔符,然后将标记复制到临时变量进行处理。这样你就可以以任何你喜欢的方式处理空令牌。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)