【发布时间】:2009-12-30 04:16:08
【问题描述】:
解析逗号分隔列表的最简单方法是什么,其中每个标记之间可以有零个元素。 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,",");
}
感谢您的意见和帮助。 (也许我应该在发帖之前更仔细地考虑一下。)
【问题讨论】:
-
为什么不使用任何库自己编写整个东西?
标签: c cstring delimiter strtok