2014-02-16 38 views
0

我想解析与strtok命令行参数。在我进入一个循环之前,我得到一个成功的标记,但是一旦我进入我的while循环来标记其余的参数,它就会退出工作任何想法?代码:使用strtok解析C++中的命令行参数

int main(int argc, char *argv[]) 
{ 
char *t = NULL; 
t = strtok(*argv," ,.-"); 
while (t != NULL) 
{ 
    cout << t << endl; 
    t = strtok (NULL, " ,.-"); 
} 
return 0; 
} 
+1

什么是你标记失败的字符串? “ABC DEF”对我来说工作得很好。就像它通过时分开的那样。或者 - – codah

+1

imo,strtok不应该在C++中使用。这是C中最丑陋的函数之一。 – Brian

+0

我正在编写一个shell程序,所以我正在使用“ls -l”进行测试。 –

回答

1

这不是strtok的工作方式。随后对strtok的调用将继续处理第一个调用中提供的第一个参数。 strtok不应该用于此,因为参数已经被标记,即它们不在单个字符数组中。

+0

我明白了。我去了cplusplus.com的文档,所以也许这是一个错误。你有什么建议如何标记我的输入? –

+0

是的,你应该循环argv数组元素并处理它们。不需要标记。你在argc中有大小的数组。 – user2672165

+0

我想,但我担心strtok()是我的任务的一部分。吮吸,读一段时间后,我拿起那个strtok是撒旦的产卵 –