解析逗号分隔列表的最简单方法是什么,每个标记之间可以有零个元素。cstring 可能看起来像
1, 3, 4, 5, 6, 7, 8, ....
但也可能看起来像
, , , , , , , , , ...
我试过类似的东西:
char *original = "1, 3, 4, 5, 6, 7, 8, ...."
char *tok = strtok(original," ,")
while(tok!=NULL){
while(*tok!='\0'){
//dostuff
tok++;
}
tok=strtok(NULL," ,");
}
这显然只有在逗号之间有元素时才有效,例如,我注意到如果没有元素,第一个项目列表将被跳过。
我尝试过其他解决方案,例如 strchr(),但这变得非常难看,我认为有一种更简单的方法。
谢谢
更新:
经过一些测试后,我注意到对“,”进行标记似乎在所有情况下都有效,除非第一项丢失。所以我把它作为一个特例。
char *original = "1, 3, 4, 5, 6, 7, 8, ...."
if(*original==',')
//dostuff
char *tok = strtok(original,",")
while(tok!=NULL){
while(*tok!='\0'){
//dostuff
tok++;
}
tok=strtok(NULL,",");
}
感谢您的意见和帮助。(也许我应该在发布之前更仔细地考虑一下。)