當前位置:編程學習大全網 - 源碼下載 - 壹道關於文本字符處理的程序,大家幫個忙

壹道關於文本字符處理的程序,大家幫個忙

//我以前寫過類似的,現在修改了壹下,能滿足妳的要求,絕對原創,但是C++ code,不好意思,如果妳想要C code的話,50分絕對不夠的,代碼長度至少比現在長三倍

#if _MSVC_VER <= 1200

#pragma warning( disable: 4786)//消除vc6對模板支持不好的警告

#endif

#pragma warning( disable: 4996)//消除.net對不安全數據的警告

#include <iostream>

#include <string>

#include <algorithm>

#include <vector>

#include <functional>

#include <stdio.h>

using namespace std;

typedef pair<string,int> MyData;

template<class _Ty>

struct MySort

: public binary_function<_Ty, _Ty, bool>

{ // functor for operator>

bool operator()(const _Ty& _Left, const _Ty& _Right) const

{ // apply operator> to operands

return _Left.second>_Right.second;

}

};

bool FindKeyWord(vector<MyData> &vecWord,string &strKey)

{

vector<MyData>::iterator iter;

for(iter=vecWord.begin();iter!=vecWord.end();iter++)

{

if (iter->first==strKey)

{

iter->second++;

return true;

}

}

return false;

}

bool SetDataIntovector(const char * szWrod,vector<MyData> &vecWord)

{

size_t i;

string strSubWord;

size_t nLen=strlen(szWrod);

if (szWrod[0]!=' ') i=0;

else

for(i=0;i<nLen;i++) if (szWrod[i]!=' ') break;

if (i==nLen) return false;//居然壹個字符都沒有

size_t nBegin=i;

size_t nEnd;

string strTemp=szWrod;

for(i=nBegin;i<nLen;i++)

{

nEnd=strTemp.find(' ',i+1);

if (nEnd==-1) nEnd=nLen;

strSubWord.assign(szWrod+i,nEnd-i);

if (!FindKeyWord(vecWord,strSubWord)) vecWord.push_back(MyData(strSubWord,1));//找不到關鍵字則添加

i=nEnd;

}

return true;

}

int main()

{

vector<MyData> vecData;

char szData[4048];//記住妳輸入的英文字符不能大於4048

cout<<"下面輸入英文語句:"<<endl;

gets(szData);

if (!SetDataIntovector(szData,vecData))//把數據放入vector

{

cout<<"居然壹個字符也不輸!"<<endl;

return 0;

}

sort(vecData.begin(),vecData.end(),MySort<MyData>());

vector<MyData>::iterator iter;

if (vecData.size()<5)//關鍵字少於5的

{

for(iter=vecData.begin();iter!=vecData.end();iter++)

cout<<"關鍵字:"<<iter->first<<"\t\t出現概率:"<<iter->second<<endl;

}

else

for(iter=vecData.begin();iter<vecData.begin()+5;iter++)

cout<<"關鍵字:"<<iter->first<<"\t\t出現概率:"<<iter->second<<endl;

return 0;

}

  • 上一篇:織夢網站後臺被掛馬壹般是掛哪幾個文件,覆蓋了是不是就沒事了
  • 下一篇:如何查看hashmap源代碼
  • copyright 2024編程學習大全網