string容器用法

string 容器用法

string型变量的使用并不需要特殊的头文件,但是一部分的string字符串的操作在使用时需要加上头文件:

#include<string>

用法

(1)直接给string对象赋值

string s;
s="abcd"

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

string s;//直接初始化为空串
char a[1000];
scanf("%s",&a);//scanf的输入速度比cin快,且scanf不支持string对象
s=a;

(3)常用方法

string s;
string::iterator it;//定义迭代器
it=s.begin;
//利用迭代器循环遍历string
for(;it!=s.end();it++){
	cout<<*it;
}
//利用迭代器循环遍历string
for(int i=0;i<str.size();i++){
	cout<<it[i];
}
s.size();//字符串长度
s.length();//字符串长度
s.append(str);//在字符串s尾部添加字符串str,只能添加字符串不能添加字符
s.insert(it+n,c);//把字符c插入迭代器位置为n的地方(下标从0开始)
s.insert(p.str);//把字符串str插入到下标p的位置(下标从0开始)
s.erase(it+n);//删除迭代器位置为n的元素(下标从0开始)
s.erase(it+m,it+n);//删除迭代器位置从m到n-1区间的元素
s.empty();//返回字符串是否为空,空返回true
s.replace(p,n,str);//从下标p开始,把后面的n个字符串替换成字符串str
s.find(c);//返回字符串s中第一次出现字符c的下标值,c为空串则返回0,如果没有找到则返回一个很大的数(无符号整型的-1)
s.find(str);//返回字符串s中第一次出现子串str的下标值,没有则返回0
s.compare(str);//比较两个字符串的大小,如果s==str返回0,如果s>str返回正数,否则返回负数
s.begin();//返回字符串首地址
s.end();//返回字符串尾地址
s.clear();//清空字符串,一般如果清空一个字符串就直接给它赋空字符串,即s="";

(4)逻辑运算与简便操作

s1>/</==/!=/>=/<=s2;//两个字符串可以进行逻辑判断
s1=s2;//两个字符串相互赋值
s1=s1+s2;//在s1尾部追加字符串或者字符
s1=s2+s3;//两个字符串进行相加,结果与两个字符串的相加顺序有关  例:s2="abc"   s3="123"   s1="abc123"

(5)int与string之间的相互转换
1.int转为string
使用stringstream
注意每次转换都要情况straingstream,里面存的东西不会随之转换而消失

#include<sstream>
int x=1;
stringstream st;
string s;
st<<x;
s=st.str();
cout<<s<<endl;

也可以用to_string()函数

//实现to_string函数
#include<iostream>
#include<string>
using namespace std;
#define max 100
string to_String(int n)
{
    int m = n;
    char s[max];
    char ss[max];
    int i=0,j=0;
    if (n < 0)// 处理负数
    {
        m = 0 - m;
        j = 1;
        ss[0] = '-';
    }
    while (m>0)
    {
        s[i++] = m % 10 + '0';
        m /= 10;
    }
    s[i] = '\0';
    i = i - 1;
    while (i >= 0)
    {
        ss[j++] = s[i--];
    }
    ss[j] = '\0';
    return ss;
}

int main()
{
    cout << "请输入整数:";
    int m;
    cin >> m;
    string s = to_String(m) + "abc";
    cout << s << endl;
    system("pause");
    return 0;
}

2.string转为int

int x=1;
stringstream st;
string s="123";
st<<s;
st>>x;
st.clear();//需要调用方法清空
cout<<x<<endl;

操作示例

#include<iostream>
#include<string>
using namespace std;
int main()
{
    //定义一个字符串变量
    string s;
    //从字符串s尾部添加一串字符串
    s.append("hello!");
    cout<<"s.append():  "<<s<<endl;
    //在指定迭代器位置插入一个字符
    s.insert(s.begin()+1,'q');
    cout<<"s.insert():   "<<s<<endl;
    //在指定位置插入一个字符串
    s.insert(2,"asd");
    cout<<"s.insert():   "<<s<<endl;
    //删除指定迭代器位置的一个字符
    s.erase(s.begin()+1);
    cout<<"s.erase():   "<<s<<endl;
    //删除迭代器指定区间的字符
    s.erase(s.begin()+1,s.begin()+4);
    cout<<"s.erase():   "<<s<<endl;
    //返回字符串的长度
    cout<<"s.length():   "<<s.length()<<endl;
    //判断字符串是否为空
    if(s.empty())
    cout<<"Is empty"<<endl;
    else
    cout<<"Not empty"<<endl;
    //字符串替换
    s.replace(2,3,"asd");
    cout<<"s.replace():   "<<s<<endl;
    //查找字符
    cout<<"s.find():   "<<s.find('a')<<endl;
    //查找字符串
    cout<<"s.find():   "<<s.find("ea")<<endl;
    //比较两个字符串的大小
    string s1,s2;
    s1="asd";
    s2="qwe";
    if(s1.compare(s2)==0)
    cout<<"s1=s2"<<endl;
    else if(s1.compare(s2)>0)
    cout<<"s1>s2"<<endl;
    else if(s1.compare(s2)<0)
    cout<<"s1<s2"<<endl;
    //简便操作
    string s3,s4;
    s3="zxc";
    s1=s1+s2;
    cout<<"s1:   "<<s1<<endl;
    s4=s1+s3;
    cout<<"s4:   "<<s4<<endl;
    //清空字符串
    s="";
    //判断字符串是否为空
    if(s.empty())
    cout<<"Is empty"<<endl;
    else
    cout<<"Not empty"<<endl;
}

结果

在这里插入图片描述

各种find

https://www.cnblogs.com/wkfvawl/p/9429128.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值