string字符类型容器

字符指针赋值:

#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int main()
{
    string s;
    char ss[5000];
    scanf("%s",ss);//scanf是c语言输入,输入速度比cin快
    s=ss;
    cout<<s<<endl;
    return 0;
}

string对象的尾部添加一个字符(char),采用“+”即可(单字符''多字符字符串“”)
添加也可用append例如:

#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int main()
{
    string s;
    s=s+'a';
    s=s+"abc";
    s.append("123");
    cout<<s<<endl;
    return 0;
}

给string对象插入字符

#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int main(int argc,char* argv[])
{
    string s;
    s="abc123";
    string::iterator it;//定义迭代器
    it=s.begin();//迭代器位置选择字符串开头
    s.insert(it+2,'p');//将‘p’插入第2个字符前(字符位置从0开始)
    cout<<s<<endl;
    return 0;
}

访问string对象的元素: 

#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int main(int argc,char* argv[])
{
    string s;
    s="bbc123";
    cout<<s[0]<<endl;//输出string对象的首元素
    cout<<s[0]-'a'<<endl;//输出类型是数字
    return 0;
}

删除string对象元素

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

(2)使用erase()方法删除迭代器所指的那个元素或一个区间的所有元素

#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int main(int argc,char* argv[])
{
    string s;
    s="bbc123456";
    string::iterator it=s.begin();
    s.erase(it+3);//删除第3个元素,元素位置从0开始
    cout<<s<<endl;
    s.erase(it+1,it+4);//删除1~4区间所有元素
    cout<<s<<endl;
    s="";
    cout<<s.length()<<endl;//输出字符串长度
}

返回string对象长度

采用empty()方法,字符串为空,返回逻辑真1,否则为0

#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int main(int argc,char* argv[])
{
    string s;
    s="bbc123456";
    cout<<s.empty()<<endl;//字符串不为空,返回0
    s="";
    cout<<s.empty()<<endl;//字符串为空,返回1
}

替换string对象字符

使用replace()的进行替换

#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int main(int argc,char* argv[])
{
    string s;
    s="bbc123456";
    s.replace(3,3,"good");//从第三个开始,将连续的三个字符替换为“good”
    cout<<s<<endl;
    return 0;
}

搜索string对象的元素或子串

采用find()方法,查到返回下标值(从0开始);查不到,返回4294967295

#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int main(int argc,char* argv[])
{
    string s;
    s="bbc123456";
    s.replace(3,3,"good");//从第三个开始,将连续的三个字符替换为“good”
    cout<<s<<endl;
    return 0;
}

string对象比较

采用compare();它比对方大(如果比较的字符串和被比较字符串前面都一样,返回被比较字符串的多的字符的个数),返回1;比对方小,返回-1;相同,返回0;

#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int main()
{
    string s;
    s="cat dog cat";
    cout<<s.compare("cam")<<endl;
    cout<<s.compare("cat")<<endl;
    cout<<s.compare("cat dog cat")<<endl;
    cout<<s.compare("dog")<<endl;
    return 0;
}

 用reverse反向排序

采用reverse()方法将string对象迭代器所指向的一段区间中的元素反向排序(需要头文件)。

#include <iostream>
#include <string>
#include <stdio.h>
#include <algorithm>
using namespace std;
int main()
{
    string s;
    s="cat dog cat";
    reverse(s.begin(),s.end());//从首字符到最后一位字符反序
    cout<<s<<endl;
    return 0;
}

string对象作为vector元素(类似于字符串数组)

#include <iostream>
#include <string>
#include <stdio.h>
#include <algorithm>
#include <vector>
using namespace std;
int main(int argc, char* argv[])
{
    vector<string> s;
    s.push_back("Jack");
    s.push_back("Tom");
    s.push_back("Mike");
    cout<<s[0]<<endl;
    cout<<s[1]<<endl;
    cout<<s[2]<<endl;
    cout<<s[0][0]<<endl;
    cout<<s[1][0]<<endl;
    cout<<s[2].length()<<endl;//计算长度
    return 0;
}

string类型的数字化处理

#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
int main(int argc, char* argv[])
{
    string s;
    s="1234059";
    int i,sum=0;
    for(i=0;i<s.length();i++)
    {
        if(s[i]=='0')sum=sum+0;
        else if(s[i]=='1')sum=sum+1;
        else if(s[i]=='2')sum=sum+2;
        else if(s[i]=='3')sum=sum+3;
        else if(s[i]=='4')sum=sum+4;
        else if(s[i]=='5')sum=sum+5;
        else if(s[i]=='6')sum=sum+6;
        else if(s[i]=='7')sum=sum+7;
        else if(s[i]=='8')sum=sum+8;
        else if(s[i]=='9')sum=sum+9;
    }
    cout<<sum<<endl;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/acm147258369/article/details/83997330
今日推荐