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博客这位大神讲的很明白!

 

posted @ 2021-08-11 15:52  丘丘王  阅读(248)  评论(0)    收藏  举报
鼠标点击页面特效

尝试在空白处点击鼠标