小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

web信息的搜集---StrFun.h+StrFun.cpp

 閑來(lái)看看 2013-01-18
2011-11-01 21:18

web信息的搜集---StrFun.h+StrFun.cpp

StrFun.h

#ifndef STRFUN_H_

#define STRFUN_H_

#include<string>

#include<sstream>

#include<algorithm>

#include<iostream>

using namespace std;

class CStrFun

{

public:

CStrFun();

virtual ~CStrFun();

static string itos(long long i)

{

stringstream s;

s<<i;

return s.str();

}

static void Str2Lower(string &source,int nLen);

static string::size_type FindCase(string haystack,string needle);

static string::size_type FindCaseFrom(string haystack,string needle,int From);

static void ReplaceStr(string &str,string srstr,string dsstr);

static void EraseStr(string &str,string substr);

//靜態(tài)函數(shù),歸屬于類空間的函數(shù)

};

#endif /* STRFUN_H_ */

StrFun.cpp

#include"StrFun.h"

CStrFun::CStrFun()

{

}

CStrFun::~CStrFun()

{

}

//將string中的大寫(xiě)字母變成小寫(xiě)字母

void CStrFun::Str2Lower(string &str,int nLen)

{

int i;

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

if(str[i]>='A'&&str[i]<='Z')

str[i]+=32;

return;

}

//toupper(ch):將ch變成大寫(xiě)字母,該函數(shù)為比較函數(shù),不分字母大小寫(xiě)的比較['A'=='a']

bool _nocase_compare(char c1,char c2)

{

return toupper(c1)==toupper(c2);

}

/*

功能:

找到haystack字符串中needle出現(xiàn)的位置,注意點(diǎn)就是,例如:

haystack="AAABBBCCC"

needle="abbbc"

則返回的是2

haystack="AAABBBCC"

needle="ABBBC"

則返回的是2

[我們這里是忽略字母的大小寫(xiě)的比較]

*/

string::size_type CStrFun::FindCase(string haystack,string needle)

{

if(haystack.empty())

return string::npos;

if(needle.empty())

return string::npos;

string::iterator pos;

pos=search(haystack.begin(),haystack.end(),needle.begin(),needle.end(),_nocase_compare);

if(pos==haystack.end())

return string::npos;

else

return (pos-haystack.begin());

}

/*

功能:

同上

不同的是,多了一個(gè)參數(shù)nFrom,指示的是haystack的第nFrom位置開(kāi)始查找

而上面的函數(shù)是在第0個(gè)位置開(kāi)始查找.

*/

string::size_type CStrFun::FindCaseFrom(string haystack,string needle,int nFrom)

{

if(haystack.empty())

return string::npos;

if(needle.empty())

return string::npos;

string::iterator pos;

pos=search(haystack.begin()+nFrom,haystack.end(),needle.begin(),needle.end(),_nocase_compare);

if(pos==haystack.end())

return string::npos;

else

return (pos-haystack.begin());

}

/*

功能:

刪除str中所有的substr子字符串

*/

void CStrFun::EraseStr(string &str,string substr)

{

if(str.size()==0||substr.size()==0)

return;

string::size_type idx=0;

string::size_type sub_length=substr.length();

idx=str.find(substr,idx);//從字符串str中的idx位置開(kāi)始查找substr

while(idx!=string::npos)

{

str.erase(idx,sub_length);//刪除字符串str從idx位置開(kāi)始的長(zhǎng)為sub_length個(gè)字符

idx=str.find(substr,idx);

}

return;

}

/*

功能:

在str中找到所有的srstr字串,并用dsstr字串代替

不要求刪除的字串同插入的字串相同.

*/

void CStrFun::ReplaceStr(string &str,string srstr,string dsstr)

{

if(str.size()==0||srstr.size()==0)

return;

string::size_type idx=0;

string::size_type sub_length=srstr.length();

idx=str.find(srstr,idx);

while(idx!=string::npos)

{

str.replace(idx,sub_length,dsstr);//刪除str中從idx位置開(kāi)始的長(zhǎng)為sub_length個(gè)字符,然后用字符串dsstr代替

if(idx+dsstr.size()>str.size())

break;//str最尾端的字符串都被dsstr代替了,則結(jié)束,因?yàn)椴豢赡苷业絪rstr字符串了

idx=str.find(srstr,idx+dsstr.size());//加快類匹配速度,而且防止了匹配覆蓋

}

return;

}

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多