1. 程式人生 > 其它 >C++中 getline函式的用法以及vector、set容器的學習、strtok用法

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部落格這位大神講的很明白!