在Linux上用man查找strtok,原型如下:
#include <string.h>
char *strtok(char *str, const char *delim);
这是我第一次接触到c/c++上的字符串分割库函数。
由于之前花在Java的时间比较长,经常用到Java的字符串分割函数split。使用过的人都知道,split的用法蛮简单的,而且也符合大家的惯性思维。split的用法如下:
然后,这就是悲剧的开始,我一看到strtok,我就按照split的理解去使用它。比如,我要分割一个版本号字符串,一开始,我的写法是这样的:
string version="2.3.3";
const char *delim=".";
char *mainVersion=strtok(version,delim);
char *subVersion=strtok(NULL,delim);
以上的程序片段能让我们得到想要的值,结果mainVersion为2,subVersion为3。但是此刻version的值变了,当初不知道,还以为version的值还是"2.3.3",就再次用version进行分割。