string

c++中自带的字符串类string在处理字符串的时候会比字符数组方便很多,而且可以直接与其他嵌套使用;头文件为#include<cstring>

1.创建对象和赋值

#include<bits/stdc++.h>
using namespace std;
int main()
{
	string str;//创建一个字符串变量str
	str="hello"; 
	cout<<str<<endl;
}
#include<bits/stdc++.h>
using namespace std;
int main()
{
	string str1,str2;//我们来看一下覆盖赋值
	str1="hello,world";str2="nice";
	cout<<"str1:"<<str1<<endl<<"str2:"<<str2<<endl<<endl;
	str1=str2;
	cout<<"str1:"<<str1<<endl<<"str2:"<<str2<<endl;//覆盖赋值跟c语言中整形变量的覆盖赋值一样,会直接覆盖; 
}
2.字符串的连接和比较

连接在这里我们可以直接使用‘+’运算符;

#include<bits/stdc++.h>
using namespace std;
int main()
{
	string str,str2;
	str="h";
	str=str+'e';//在尾部加一个字母e 
	cout<<str<<endl;
	str=str+"llo";//在尾部加一个串llo 
	cout<<str<<endl;
	str2=",world!";
	str=str+str2;//加另一个字符串 
	cout<<str<<endl;
}

比较也可以直接用'>''<''=="

#include<bits/stdc++.h>
using namespace std;
int main()
{
	string str1="abd",str2="abc";
	if(str1>str2)
	{
		cout<<"str1>str2"<<endl;
		str2="abe";//更改str2的值使str1<str2
	}
	if(str1<str2)
	{
		cout<<"str1<str2"<<endl;
		str2="abd";//更改str2的值使str1==str2
	}
	if(str1==str2)
	{
		cout<<"str1==str2"<<endl;
	}
	return 0;
} 


3.访问string对象的元素;

我们想访问字符串中的某个位置的字符的时候c语言的那种方式依旧可以用;

#include<bits/stdc++.h>
using namespace std;
int main()
{
	string str="0123456789";
	cout<<str[5]<<endl;
	return 0;
}	

substr(int pos,int n);意思是从第pos位开始输出n个字符;可以访问其中某一段,这对汉字的输出起到了很大的便利,因为汉字占两个位置按上边的方法输出是不行的;

#include<bits/stdc++.h> 
using namespace std;
int main()
{
	string s="你好";
	cout<<"*"<<s[0]<<endl;//看一下按上边那种输出方式,输出的是什么 
	cout<<s.substr(0,2)<<endl;//第一个参数为第几位,第二个为输出几个字符;汉字两个 
	cout<<s.substr(2,2)<<endl;
}
4.插入字符或字符串

insert()函数;插入到指定位置之前;(这个位置是迭代器位置,迭代器是什么我也不太理解)

#include<bits/stdc++.h>
using namespace std;
int main()
{
	string str="12345";
	str.insert(1,"hello");//在1位置插入hello 
	str.insert(str.begin(),'S');//这种只能插入一个字符;str.begin()返回开始位置的迭代器  
	str.insert(str.end(),5,'x');//在末尾插入5个x        str.end()返回结束位置的迭代器
	cout<<str<<endl;
	return 0;
}
5.删除元素

erase()函数;删除某个字符或者一个区间的所有元素;

#include<bits/stdc++.h>
using namespace std;
int main()
{
	string str="123zabc456";
	string::iterator it=str.begin();//定义迭代器变量,并且位置指在首元素,迭代器用法跟循环变量i差不多(我也不太明白直接用就行) 
	str.erase(it+3);//删除第4个元素 因为it从0开始所以it+3就是第四个元素 
	cout<<str<<endl;
	str.erase(it+3,it+6);//删除[3,6)区间的元素 既删除第3,4,5元素 注意从0开始计数! 
	cout<<str<<endl;
	return 0;
}
6.替换字符或者字符串

replace()函数;

#include<bits/stdc++.h>
using namespace std;
int main()
{
	string str="123456789";
	str.replace(2,3,"good");//从第2个开始,将连续的三个字符替换为good 
	cout<<str<<endl; 	
	return 0;
} 
7.搜索string对象的元素或者子串

find();这个函数有很多重载函数,用法也是多种多样;在这我只说常用的一种;

#include<bits/stdc++.h>
using namespace std;
int main()
{
	string str="good bad";
	cout<<str.find('b')<<endl; //找到第一个字符b返回下标值
	cout<<str.find("bad")<<endl;//找到第一个bad字符串的返回开始位置下标值
	return 0;
} 
8.string对象的长度和清空和判断是否为空

length()求长度;clear()清空;empty()判断是否为空;

#include<bits/stdc++.h>
using namespace std;
int main()
{
	string str="123456";
	cout<<str.length()<<endl;//输出str长度
	cout<<str.empty()<<endl;//判断是否为空,为空返回1,不为空返回0 
	str.clear();//清空str 
	cout<<str.empty()<<endl; 
	return 0;
} 

9.string和STL其他工具嵌套使用

(1)string作为vector的元素

#include<bits/stdc++.h>
using namespace std;
int main()
{
	string str1="ABC",str2="XYZ";
	vector<string>v;
	v.push_back(str1);
	v.push_back(str2);
	cout<<v[0]<<endl<<v[1]<<endl;
	return 0;
} 
(2)string排序
①可以用sort对单个string中的某一段进行排序;

#include<bits/stdc++.h>
using namespace std;
int main()
{
	string str1="BDACEGF",str2="ABDECXYZ";
	sort(str1.begin(),str1.end());//对str1整个进行排序 
	cout<<str1<<endl;
	sort(str2.begin()+2,str2.begin()+5);//对str2的[2,5)区间进行排序 
	cout<<str2<<endl;
	return 0;
} 

②对字符串数组排序

#include <bits/stdc++.h>
using namespace std;
int main()
{
	string s[6];
	s[0] = "ABC";
	s[1] = "ABD";
	s[2] = "ABCD";
	s[3] = "BBC";
	s[4] = "ABC";
	s[5] = "aBC";
	sort(s,s + 6);//对这6个字符串按照字典序进行排序 
	for(int i = 0; i < 6; i++)
	{
		cout << s[i] << endl;
	}
	return 0; 
}

10.字符串与数字的转换,stringstream的简单运用,注意如果连续运用同一个需要用clear清空

字符串变为数字

#include <bits/stdc++.h>
using namespace std;
int main()
{
	string s = "123";
	int a = 0;
	stringstream ss;
	ss<<s;
	ss>>a;
	cout << a << endl;
	return 0; 
}
数字变为字符串
#include <bits/stdc++.h>
using namespace std;
int main()
{
	string s = "123";
	int b = 666;
	stringstream ss;
	ss << b;
	ss >> s;
	cout << s << endl;
	return 0; 
}


外加一个sscanf用法

#include<bits/stdc++.h> 
using namespace std;
int main()
{  
    char str[100];  
    //用法一:取指定长度的字符串  
    sscanf("12345","%4s",str);  
    printf("用法一\nstr = %s\n",str);  
  
    //用法二:格式化时间  
    int year,month,day,hour,minute,second;  
    sscanf("2013/02/13 14:55:34","%d/%d/%d %d:%d:%d",&year,&month,&day,&hour,&minute,&second);  
    printf("用法二\ntime = %d-%d-%d %d:%d:%d\n",year,month,day,hour,minute,second);  
  
    //用法三:读入字符串  
    sscanf("12345","%s",str);  
    printf("用法三\nstr = %s\n",str);  
  
    //用法四:%*d 和 %*s 加了星号 (*) 表示跳过此数据不读入. (也就是不把此数据读入参数中)  
    sscanf("12534acc","%*d%s",str);  
    printf("用法四\nstr = %s\n",str);  
  
    //用法五:取到指定字符为止的字符串。如在下例中,取遇到'+'为止字符串。  
    sscanf("12345+acc","%[^+]",str);  
    printf("用法五\nstr = %s\n",str);  
  
    //用法六:取到指定字符集为止的字符串。如在下例中,取遇到小写字母为止的字符串。  
    sscanf("12345+acc121","%[^a-z]",str);  
    printf("用法六\nstr = %s\n",str);  
    return 0;  
}  


想了解更多大家可以去string用法总结,看一下大神的;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值