String 基本字符容器系列

  • 头文件:#include<string>
  • 创建string对象
#include<string>
#include <iostream>
using namespace std;

int main(int argc,char*argv[]) {
    //创建长度为零的字符串
   string s;
   cout<<s.length()<<endl;
    return 0;
}
  • 给string对象赋值
​
#include<string>
#include <iostream>
#include<algorithm>
#include<cstdio>
#include <cctype>
using namespace std;
int main(int argc,char*argv[]) {
    
   string s;
   //直接给字符串赋值
   s="hello world!";
   cout<<s<<endl;
   //把字符指针赋值给一个字符串对象
   string string;
   char a[45];
   //scanf的输入速度比cin快得多
   //scanf是c语言的函数,不支持string对象
   scanf("%s",&a);
   //把整个字符串数组赋值给string对象
   string=a;
   cout<<string<<endl;
    return 0;
}

​
  • 从string对象尾部添加字符
#include<string>
#include <iostream>
#include<algorithm>
#include<cstdio>
#include <cctype>
using namespace std;
int main(int argc,char*argv[])
{
   string s;
   s=s+'a';
   s=s+'n';
   s=s+'d';
   cout<<s<<endl;
    return 0;
}
  • 从string对象尾部追加字符串
#include<string>
#include <iostream>
#include<algorithm>
#include<cstdio>
#include <cctype>
using namespace std;
int main(int argc,char*argv[])
{
   string s;
   //直接用+操作符
   s=s+"and";
   s=s+"AND";
   s=s+"123";
   cout<<s<<endl;
   
   //采用append()方法
   string ss;
   ss.append("and");
   ss.append("AND");
   ss.append("123");
   cout<<ss<<endl;
    return 0;
}
  • 给string对象插入字符
#include<string>
#include <iostream>
#include<algorithm>
#include<cstdio>
#include <cctype>
using namespace std;
int main(int argc,char*argv[])
{
   string s;
   s="abcdefg";
   //定义迭代器
   string::iterator it;
   //迭代器位置为串首
   it=s.begin();
   //插入'x'到第二个位置
   s.insert(it+2,'x');
   cout<<s<<endl;
    return 0;
}
  • 访问string对象元素
#include<string>
#include <iostream>
#include<algorithm>
#include<cstdio>
#include <cctype>
using namespace std;
int main(int argc,char*argv[])
{
   string s;
   s="abcdefg";
//输出首元素
   cout<<s[0]<<endl;
//相同相减为零
   cout<<s[0]-'a'<<endl;
    return 0;
}
  • 删除string对象的元素
  1. 清空一个字符串,直接给它赋空字符串即可
  2. 使用erase()方法
#include<string>
#include <iostream>
#include<algorithm>
#include<cstdio>
#include <cctype>
using namespace std;
int main(int argc,char*argv[])
{
   string s;
   s="abcdefgh12345";
   //定义迭代器
   string::iterator it;
   it=s.begin();
   //删除第三个元素
   s.erase(it+3);
   cout<<s<<endl;
   //删除区间0-4的所有元素
   s.erase(it,it+4);
   cout<<s<<endl;
   //清空字符串
   s="";
   cout<<s.length()<<endl;
   return 0;
}
  • 返回string对象的长度
  1. 采用length()方法可以返回字符串长度
  2. 采用empty()方法可以返回字符串是否为空
#include<string>
#include <iostream>
#include<algorithm>
#include<cstdio>
#include <cctype>
using namespace std;
int main(int argc,char*argv[])
{
   string s;
   s="abcdefgh12345";
   //输出字符串长度
   cout<<s.length()<<endl;
   //清空字符串
   s="";
   //判断是否为空
   cout<<s.empty()<<endl;
   return 0;
}
  • 替换string对象的字符
#include<string>
#include <iostream>
#include<algorithm>
#include<cstdio>
#include <cctype>
using namespace std;
int main(int argc,char*argv[])
{
   string s;
   s="abcdefgh12345";
   //从第八个开始,连续5个字符替换为" good";
   s.replace(8,5," good");
   cout<<s<<endl;
   return 0;
}
  • 搜索string对象的元素或子串
#include<string>
#include <iostream>
#include<algorithm>
#include<cstdio>
#include <cctype>
using namespace std;
int main(int argc,char*argv[])
{
   string s;
   s="abcdefgh12345";
    //查找第一个字符'c',返回下标值
   cout<<s.find('c')<<endl;
   //查找第一个子串"c",返回下标值
   cout<<s.find("c")<<endl;
    //查找第一个字符"123",返回下标值
   cout<<s.find("123")<<endl;
    //查找第一个字符"132",查不到返回18446744073709551615
   cout<<s.find("132")<<endl;
    return 0;
}
  • string对象的比较
#include<string>
#include <iostream>
#include<algorithm>
#include<cstdio>
#include <cctype>
using namespace std;
int main(int argc,char*argv[])
{
   string s;
   s="abcdefgh12345";
   //s小,返回负数
   cout<<s.compare("cdde")<<endl;
   //s大,返回正数
   cout<<s.compare("aad")<<endl;
   //一样大,返回零
   cout<<s.compare("abcdefgh12345")<<endl;
    return 0;
}
  • 用reverse反向排序string对象
  1. reverse()方法头文件:#include<algorithm>
#include<string>
#include <iostream>
#include<algorithm>
#include<cstdio>
#include <cctype>
using namespace std;
int main(int argc,char*argv[])
{
   string s;
   s="abcdefgh12345";
   reverse(s.begin(),s.end());
   cout<<s<<endl;
   return 0;
}
  • string对象作为vector元素
#include<string>
#include<vector>
#include <iostream>
#include<algorithm>
#include<cstdio>
#include <cctype>
using namespace std;
int main(int argc,char*argv[])
{
    vector<string>v;
    v.push_back("Nike");
    v.push_back("Senma");
    v.push_back("Jaodan");
    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;
}
  • string类型的数字化处理
#include<string>
#include <iostream>
#include<algorithm>
#include<cstdio>
#include <cctype>
using namespace std;
int main(int argc,char*argv[])
{
   string s;
   s="13243512345";
   int sum=0;
   for(int i=0;i<s.length();i++){
       if(s[i]=='0')sum+=0;
       else if(s[i]=='1')sum+=1;
       else if(s[i]=='2')sum+=2;
       else if(s[i]=='3')sum+=3;
       else if(s[i]=='4')sum+=4;
       else if(s[i]=='5')sum+=5;
       else if(s[i]=='6')sum+=6;
       else if(s[i]=='7')sum+=7;
       else if(s[i]=='8')sum+=8;
       else if(s[i]=='9')sum+=9;
   }
   cout<<sum<<endl;
return 0;
}
  • string对象与字符数组互操作
#include<string>
#include <iostream>
#include<algorithm>
#include<cstdio>
#include <cctype>
using namespace std;
int main(int argc,char*argv[])
{
   string s;
   char ss[1000];
//输入字符到字符数组
   scanf("%s",&ss);
   s=ss;
//用printf输出字符串对象,要采用c_str()方法
   printf(s.c_str());
   cout<<endl;
   printf("%s",ss);
   cout<<endl;
   cout<<s<<endl;
   cout<<ss<<endl;
return 0;
}
  • string对象与sscanf函数
#include<string>
#include <iostream>
#include<algorithm>
#include<cstdio>
#include <cctype>
using namespace std;
int main(int argc,char*argv[])
{
   string s1,s2,s3;
   char sa[1000],sb[1000],sc[1000];
//将字符串分离成子串
   sscanf("abc 123 ABC","%s %s %s",sa,sb,sc);
   s1=sa;
   s2=sb;
   s3=sc;
   cout<<s1<<" "<<s2<<" "<<s3<<endl;
   int a,b,c;
//将字符串分离成数字跟scanf一样
   sscanf("12 34 56","%d %d %d",&a,&b,&c);
   cout<<a<<" "<<b<<" "<<c<<endl;
   int x,y,z;
   sscanf("21,43$65","%d,%d$%d",&x,&y,&z);
   cout<<x<<" "<<y<<" "<<z<<endl;
   return 0;
}
  • string对象与数值相互转换
#include<string>
#include <iostream>
#include<algorithm>
#include<cstdio>
#include <cctype>
#include<sstream>
using namespace std;
//将数值转换为字符串 C++方法
string convertToString(double x)
{
    ostringstream o;
    if(o<<x)
    return o.str();
    return "conversion error";
}
//将字符串转换为数值 C++方法
double convertFromString(const string &s)
{
    istringstream i(s);
    double x;
    if(i>>x)
    return x;
    return 0.0;
    
}

int main(int argc,char*argv[])
{
//将数值转换为string的第一种方法:c方法
   char b[10];
   string a;
   sprintf(b,"%d",1975);
   a=b;
   cout<<a<<endl;
//将数值转换为string的第一种方法:c++方法
   string cc=convertToString(1976);
   cout<<cc<<endl;
   string dd="4324";
//将字符串转换为数值的方法:C++方法
   int p=convertFromString(dd)+2;
   cout<<p<<endl;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_40346437/article/details/81783514
今日推荐