C++中 getline函数的用法以及vector、set容器的学习、strtok用法
今天的oj题目里有一道这样的题:
题目:
lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。
Input
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
Output
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
Sample Input
you are my friend #
Sample Output
4
因为上午学的模式匹配就听懂了前1/3段,导致不会做。看了(3条消息) HDU2072 单词数【水题】_海岛Blog-CSDN博客的解答,中间还查询了
strtok((char *)NULL, "=" ) 什么意思终于看明白代码了!代码如下
/* HDU2072 单词数 */ #include <cstdio> #include <cstring> #include <iostream> #include <set> #include <string> using namespace std; int main(void) { char buf[1024]; char pound[] = "#"; char delim[] = " "; char *p; set<string> words; while(gets(buf) != NULL) { if(strcmp(buf, pound) == 0) break; words.clear(); p = strtok(buf, delim); while(p) { words.insert(p); p = strtok(NULL, delim); } cout << words.size() << endl; } return 0; }
关于strtok:原型:char *strtok(char *s, char *delim);
功能:分解字符串为一组标记串。s为要分解的字符串,delim为分隔符字符串。
说明:首次调用时,s必须指向要分解的字符串,随后调用要把s设成NULL。 strtok在s中查找包含在delim中的字符并用NULL('\0')来替换,直到找遍整个字符串。 返回指向下一个标记串。当没有标记串时则返回空字符NULL。
关于getline函数:(3条消息) C++中getline()的用法_Faith-CSDN博客这位大神讲的很明白!

浙公网安备 33010602011771号