字符串

 1、初始化

string proverb("Many a mickle make a muckle.");
string phrase(proverb,0,13);  //Many a mickle  第一个参数是作为初始化源的string对象名称,第二个参数是string对象起始索引,第三个参数是用作初始值的字符个数

 string phrase="The higher the fewer";string word=phrase.substr(4,6);//higher 第一个参数指定子字符串开始的索引位置,第二个参数指定子字符串中的字符个数

 2、compare()

word.compare("and")如果word大于and返回正整数,等于返回0,小于返回负整数 

string word1="A jackhammer";
string word2="jack";
if(word1.compare(2,4,word2)==0) //compare第一个参数是word1中子字符串的起始索引位置,第二个参数是子字符串的字符个数,即jack

string word1="A jackhammer";
string word2="It is a jack_in_the_box";
if(word1.compare(24,word2,8,4)==0)//后两个参数是word2的子字符串的索引位置和长度

if(word1.compare(2,4,"jacket",4)==0)//最后一个参数是jacket的前四个字符,即jack
  cout <<"Equal"<<endl;
  cout <<"Equal"<<endl;
  cout <<"Equal" <<endl;

3、搜索字符串

find()返回搜索到的第一个子字符串中第一个字符的索引位置

string sentence="Manners maketh man";
string word="man";
cout <<sentence.find(word)<<endl;//15
cout <<sentence.find('x')<<endl;//string::npos
cout <<sentence.find("an",3)<<endl;//16 从指定索引位置搜索
cout<<sentence.find("akat",1,2)<<endl;//9 第二个参数是开始搜索的索引位置,第三个参数是第一个参数中提取作为要查找的字符串的字符个数 

 

string sentence="Manners maketh man";
string word="an";
int count=0;
size_t position=0;
for(size-t i=0;i<=sentence.length()-word.length();)
{
  position=sentence.find(word,i);
  if(positon==string::npos)
   break;
  count++;
  i=position+1;  //允许重叠找到
}
 
for(int index=0;(index=text.find(word,index))!=string::npos;index+=word.length(),count++)//不重叠
;


 在字符串中搜索字符集合中的字符

// Program 6.10 Searching a string for characters from a set
#include <iostream>
#include <string>
using std::cout;
using std::endl;
using std::string;

int main() {
  // The string to be searched
  string text = "Smith, where Jones had had \"had had\", had had \"had\"."
                " \"Had had\" had had the examiners' approval.";

  string separators = " ,.\"\'";                     // Word delimiters

  // Find the start of the first word
  size_t start = text.find_first_not_of(separators);
  size_t end = 0;                                 // Index for the end of a word

  // Now find and output the words
  int word_count = 0;                              // Number of words
  while(start != string::npos) {
    end = text.find_first_of(separators, start + 1); // Find end of word第二个参数是要进行搜索的字符串中,从哪里开始搜索
    if(end == string::npos)                        // Found a separator?
      end = text.length();                         // No, so set to last + 1

    cout << text.substr(start, end - start)        // Output the word
         << endl;
    word_count++;                                  // Increase the count

    // Find the first character of the next word
    start = text.find_first_not_of(separators, end + 1);
  }

  cout << "Your string contained "
       << word_count << " words."
       << endl;

  return 0;
}

逆向搜索rfind()和find_last_of(),find_last_not_of用法和以上类似

 4、插入、替换、删除字符串

string phrase="We can insert a string.";
string words="a string into ";
phrase.insert(14,words);
phrase.insert(13,words,8,5);
phrase.insert(13,"into something",5);
phrase.insert(16,7,'*');


 

 

 

 

find()返回搜索到的第一个子字符串中第一个字符的索引位置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值