用fstream函数读取txt文本后,如何用C语言跳过空格提取上面的数字和字母并判断

比如a.txt 文件,
string str;

然后每一行我用的是getline(str,'\n')函数来提取
当内容是: aaa 111 222 333 fff ZZZ

时,怎么分别把他们存入不同的变量中。因为数字和字母,ZZZ还是大写字母
最后想输出这样的命令行:

aaa

111
222

333

fff

ZZZ

我只提下想法,具体实现并不难:
首先C运行时库的strtok函数可以把空格分隔的各个字符串依次取出来。类似这样:
// Establish string and get the first token:

token = strtok( string, “ ”);

while( token != NULL )
{

// While there are tokens in "string"

//TODO: You handle for this string

// Get next token:

token = strtok( NULL, " ");

}
然后对于没一个提取出来的字符串很容易判断是否整数,只需要一次判断每一个字符是否都是在0~9之类就行。
然后就可以分别保存了。追问

有人说用strtok
是很失败的方法,具体哪里不好呢?,我见其他老一辈的喜欢用char 字符数组来一点一点切割,感觉效率很低,因为要写一大堆

追答

看使用的场景吧,因为strtok会对原始字符串做修改,所以如果在一些不希望破坏原始数据的场合下需要复制一份原始字符串在进行解析。不过个人觉得用char 字符数组来一点一点切割是一个重复造轮子的工作。已经有strtok了,而且很好用,为什么不用呢?
对于你说的喜欢用char 字符数组来一点一点切割的老一辈,我并不清楚是些什么样的老一辈。不过在一些著名的工具源代码里面,比如fping的源代码里面可以看到strtok的使用。

温馨提示:答案为网友推荐,仅供参考
相似回答