strtok()函数的功能是将一个字符串按照分隔符分割成一个个新的短字符串。
原型:char *strtok(char str[], const char *delim)
str是要用来分割的原字符串,delim是用来进行分割的分隔符号。
该函数返回值是分割后的字符串的起始位置指针。
在分割一个较长字符串的时候,第一次第一个参数str是要进行分割的原字符串,第二次再次调用该函数的时候,如果第一个参数传入NULL,则就是默认从上一次未分割完的字符串的起始位置作为本次分割的起点。因此可以利用该特点不断进行分割,直到将原字符串全部分割完毕。
注意:之所以说该函书是将原字符串进行分割,是因为没有生成新的字符串,只是在原字符串上动了手脚,将原字符串拆分,因此发生变化的,只有原字符串。
比如需要解析以下文本中的内容:
1 USB CB 04 00 00 00 00 00 00 00 01 01 00 00 00 00 00 |
可利用file.Seek()来将文件指针指向文件开头;
然后利用file.ReadString()来获取文件中第一行的数据,存入CString 类型变量中,假如存入CString strline中吧。
m_id = (CString)strtok(strline.GetBuffer(0)," ");
此时“1 USB CB 04 00 00 00 00 00 00 00 01 01 00 00 00 00 00”存入strline中,以上代码的意思就是将strline中的字符串按照空格符号“ ”进行分割。
m_id也是CString类型,由于strtok()函数返回值是分割后的新字符串,因此m_id = “1”;
接下来的几次中,不断地:
cmd_temp = (CString)strtok(NULL," ");
根据特性,该函数就会从第一次还未分割完毕的那部分接着以分隔符“ ”再次进行分割。