字符串中统计单词个数
生活随笔
收集整理的這篇文章主要介紹了
字符串中统计单词个数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
用到的幾個小知識 :
1.字符串流是以空格作為一個字符串的結束標志,采用stringstream來提取單詞。
2.為了消除重復單詞,需要先將vector排序,使得重復的單詞相鄰出現,不先排序無法正確“刪除”重復元素
3.使用unique STL算法來重排vector,使得不重復的元素出現在vector的開始部分。
代碼如下:
#include "stdafx.h" #include <string.h> #include <algorithm> #include <vector> #include <deque> #include <functional> #include <iostream> #include <list> #include <sstream> #include <iterator> #include <functional>using namespace std;int _tmain(int argc, _TCHAR* argv[]) {stringstream ss;string str = "the quick red fox jumps over the slow red turtle";string strWord;vector<string> vecWords;ss.clear();ss.str(str);while (ss >> strWord){vecWords.push_back(strWord);strWord.clear();}cout << "sort before:" << endl;copy(vecWords.begin(), vecWords.end(), ostream_iterator<string>(cout, " "));cout << endl;cout << "sort after and unique before:" << endl;//從大到小排序//sort(vecWords.begin(), vecWords.end(),greater<string>());//默認是從小大的字典排序sort(vecWords.begin(), vecWords.end());copy(vecWords.begin(), vecWords.end(), ostream_iterator<string>(cout, " "));cout << endl;vector<string> vecWordsBackup(vecWords);cout << "sort and unique afer:" << endl;unique(vecWords.begin(),vecWords.end());copy(vecWords.begin(), vecWords.end(), ostream_iterator<string>(cout, " "));cout << endl;cout << "sort and unique and erase after:" << endl;vecWordsBackup.erase(unique(vecWordsBackup.begin(),vecWordsBackup.end()), vecWordsBackup.end());copy(vecWordsBackup.begin(), vecWordsBackup.end(), ostream_iterator<string>(cout, " "));cout << endl;cout << "total words:"<<vecWordsBackup.size() <<endl;return 0; }運行結果:
轉載于:https://www.cnblogs.com/jinxiang1224/p/8468433.html
總結
以上是生活随笔為你收集整理的字符串中统计单词个数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Nim Game
- 下一篇: iOS9.2 xcode 7.1.1真机