gcc version 3.2.3,Linux tmp222 2.6.9-55.EL上的测试代码
1,
#include <iostream>
#include <string.h>
int main()
{
char buf[] = ";132;312;213;;;aa";
std::cout<<buf<<std::endl;
char* test;
char* p = strtok_r(buf, ";", &test);
while(p)
{
std::cout<<p<<std::endl;
p = strtok_r(0, ";1", &test);
}
}
输出:
;132;312;213;;;aa
132
3
2
2
3
aa
结论:
1)每次strtok_r调用的参数sep可以各不相同;
2)sep包含多个字符而非单个字符时,表示其中任一个字符都是分隔标识;
3)如果字串中有连续多个分隔符,strtok_r会跳过这些分隔符,而不是返回空串;