STL泛型编程(2)——string

来源:互联网 发布:杂志制作软件 编辑:程序博客网 时间:2024/06/18 15:36

                        string基本字符系列容器

使用string容器,需要#include<string>

1.创建string对象

     #include<string>
#include<iostream>
using namespace std;
int main(int agrc,char* agrv[])
{
     string s;
  cout<<s.length()<<endl;
 return 0;
}

结果:0

原因:s是一个空字符串

2.给string对象赋值

1)直接给字符串对象赋值

#include<string>
#include<iostream>
using namespace std;
int main(int agrc,char* agrv[])
{
     string s;
  s="hello C++STL";
  cout<<s<<endl;
 return 0;
}

结果:

hello C++STL

 2)将字符指针赋值给一个字符串对象

#include<string>
#include<iostream>
using namespace std;
int main(int agrc,char* agrv[])
{
     string s;
  char ss[1000];
  scanf("%s",&ss);//scanf是c语言函数,不支持string对象
  s=ss;
  cout<<s<<endl;
 return 0;
}

 

3.从string对象尾部添加字符

#include<string>
#include<iostream>
using namespace std;
int main(int agrc,char*agrv[])
{
 string s;
 s=s+'a';
 s=s+'b';
 s=s+'c';
 cout<<s<<endl;
 return 0;
}

结果:abc

4.从string对象尾部追加元素

1)直接采用'+'

 2)采用append方法

#include<string>
#include<iostream>
using namespace std;
int main(int agrc,char*agrv[])
{
 string s1,s2;
 s1=s1+"abc";
 s1=s1+"123";
 s2.append("abc");
 s2.append("123");
 cout<<s1<<endl;
 cout<<s1<<endl;
 return 0;
}

结果:abc123

5.给string类添加对象——insert()

#include<string>
#include<iostream>
using namespace std;
int main(int agrc,char*agrv[])
{
 string s;
 s="123456";
 //迭代器的定义
 string::iterator it;
 it=s.begin();
 s.insert(it+1,'p');
 cout<<s<<endl;
 return 0;
}

结果:1p23456

6.访问string对象的元素

一般采用下标方式访问string对象的元素

#include<string>
#include<iostream>
using namespace std;
int main(int agrc,char*agrv[])
{
 string s;
 s="abc123456";
 //迭代器的定义
    cout<<s[0]<<endl;
 cout<<s[0]-'a'<<endl;
 return 0;
}

结果;

      a

      0

7.删除string对象的元素

1)清空一个字符串,直接给它赋空值即可

2)使用erase()方法删除迭代器所指的元素或者是一段区域

#include<string>
#include<iostream>
using namespace std;
int main(int agrc,char*agrv[])
{
 string s;
 s="abc123456";
 string::iterator it;
 it=s.begin();
 s.erase(it+3);
 cout<<s<<endl;
 s.erase(it,it+4);
 cout<<s<<endl;
 s="";
 cout<<s.length()<<endl;

 return 0;
}

 

abc23456

3456

0

8.返回string对象的长度

empty() 

length()

9.替换string对象的字符

replace()

#include<string>
#include<iostream>
using namespace std;
int main(int agrc,char*agrv[])
{
 string s;
 s="abc123456";
    s.replace(3,3,"good");//从第三个开始,将连续的3个字符替换为“good”
 cout<<s<<endl;
 cout<<s.length()<<endl;

 return 0;
}

 

结果:abcgood456

           10

10.搜索string对象的元素或子串

find()查找字符串中的第一个字符元素

#include<string>
#include<iostream>
using namespace std;
int main(int agrc,char*agrv[])
{
 string s;
 s="cat dog cat";
    cout<<s.find('c')<<endl;
 cout<<s.find("c")<<endl;
 cout<<s.find("cat")<<endl;
 cout<<s.find("dog")<<endl;
 cout<<s.find("dogc")<<endl;


 return 0;
}

结果:

0

0

0

4

4294967295

11.string对象的比较

compare()

12.用reverse()反向排序string对象

#include<algorithm>

 

代码:

#include<string>
#include<algorithm>
#include<iostream>
using namespace std;
int main(int agrc,char*agrv[])
{
 string s;
 s="123456789";
 reverse(s.begin(),s.end());
 cout<<s<<endl;
 return 0;
}

结果:987654321

13.string对象作为vector元素

#include<vector>
#include<string>
#include<algorithm>
#include<iostream>
using namespace std;

int main(int agrc,char* agrv[])
{
    vector<string> v;
 v.push_back("Jack");
 v.push_back("Mike");
 v.push_back("Tom");
 cout<<v[0]<<endl;
 cout<<v[1]<<endl;
 cout<<v[2]<<endl;
    cout<<v[0][0]<<endl;
 cout<<v[1][0]<<endl;
 cout<<v[2].length()<<endl;

 return 0;
}

结果:

Jack

Mike

Tom

J

M

3

14.string对象的数字化处理

在acm中取余花费时间长

#include<vector>
#include<string>
#include<algorithm>
#include<iostream>
using namespace std;

int main(int agrc,char* agrv[])
{
   string s;
   s="12345673";
   int i;
   int sum=0;
   for(i=0;i<s.length();i++)
   {
    switch (s[i])
    {
    case '0':sum+=0;  break;
    case '1':sum+=1;  break;
    case '2':sum+=2;break;
    case '3':sum+=3;break;
    case '4':sum+=4;break;
    case '5':sum+=5;break;
    case '6':sum+=6;break;
    case '7':sum+=7;break;
    case '8':sum+=8;break;
    case '9':sum+=9; break;
    }
   }
   cout<<sum<<endl;
 return 0;
}

15.string 与字符数组的相互操作

 

 

 

 

 

 

 

 

 

 

 

0 0
原创粉丝点击