常用字符串string操作--find

常用字符串string操作--find

#include  < iostream >
#include 
< string >
#include 
< cctype >
#include 
< vector >
#include 
< algorithm >
#include 
< iterator >

using namespace std;

int  main( int  argc, char **  argv[])
{
    string line1
= " We were her pride of 10 she named us: " ;
    string line2
= " Benjamin, Phoenix, the Prodigal " ;
    string line3
= " and perspicacious pacific Suzanne " ;
    string sentence 
=  line1 + '   ' + line2 + '   ' + line3;
    
    string separator(
"  \n\t:,\r\v\f " );
    vector
< string >  longest,shortest;
    
int  num  =   0 ;
    string::size_type startpos
= 0 ,endpos = 0 ;
    string word;
    
int  longLen = 0 ,shortLen =- 1 ,wordlen;
    
    
while ((startpos = sentence.find_first_not_of(separator,endpos)) != string::npos)
    {
        
++ num;
        
        endpos
= sentence.find_first_of(separator,startpos);
        
if (endpos == string::npos)
        {
            wordlen 
=  sentence.size() - startpos;
        }
        
else
        {
            wordlen 
=  endpos - startpos;
        }
        
        word.assign(sentence.begin()
+ startpos,sentence.begin() + wordlen + startpos);
        
        startpos 
=  sentence.find_first_not_of(separator,endpos);
        
        
if (shortLen ==- 1 )
        {
            shortLen
= longLen = wordlen;
            shortest.push_back(word);
            longest.push_back(word);
            
            
continue ;
        }
        
if (shortLen == wordlen)
        {
            shortest.push_back(word);
        }
        
if (shortLen > wordlen)
        {
            shortest.clear();
            shortest.push_back(word);
            shortLen 
=  wordlen;
        }
        
if (wordlen == longLen)
        {
            longest.push_back(word);
        }
        
if (wordlen > longLen)
        {
            longest.clear();
            longest.push_back(word);
            longLen
= wordlen;
        }    
    }
    
    cout
<< " Words: " << num << endl;
    cout
<< " Shortest: " << shortLen << endl;
    copy(shortest.begin(),shortest.end(),ostream_iterator
< string > (cout, "   " ));
    cout
<< endl;
    cout
<< " Longest: " << longLen << endl;
    copy(longest.begin(),longest.end(),ostream_iterator
< string > (cout, "   " ));
    cout
<< endl;
    
    system(
" pause " );
    
return   0 ;
}
#include  < iostream >
#include 
< string >
#include 
< cctype >
#include 
< vector >
#include 
< algorithm >
#include 
< iterator >

using namespace std;

void  str_replace(string &  str, const  string &  src, const  string &  dst)
{
    string::size_type pos 
=   0 ;
    
int  srclen  =  src.size();
    
int  dstlen  =  dst.size();
    
    
while ((pos  =  str.find(src,pos)) != string::npos)
    {
        
// str.replace(pos,srclen,dst);
        str.erase(pos,srclen);
        str.insert(pos,dst);
        pos
+= dstlen;
    }
}

int  main( int  argc, char **  argv[])
{
    
// replace/erase/insert
    string str( " I like apple,what about you? apple tastes great! " );
    cout
<< str << endl;
    str_replace(str,
" apple " , " banana " );
    cout
<< str << endl;
    
    
// assign/append
    string q1( " When lilacs last in the dooryard bloom'd " );
    string q2(
" The child is father of the man " );
    string sentence;
    
    sentence.assign(q2.begin(),q2.begin()
+ 13 );
    sentence.append(q1.substr(q1.find(
" in " ), 15 ));
    cout
<< sentence << endl;
    
    system(
" pause " );
    
return   0 ;
}

你可能感兴趣的:(常用字符串string操作--find)