C++字符串与string类

僤鯓⒐⒋嵵緔 提交于 2020-03-05 18:17:50

字符串与string类-2020-3-5
C++语言对于字符串的操作提供了许多字符串处理函数,我们将介绍一些常用的字符串函数,需要注意的是,使用这些字符串处理函数,需要在文件头加上#include<string.h>这一句。

1.#include<string.h>

一、字符串转换小写字符strlwr(char *s1)

该函数将字符串s1中的所有字符转小写。
如下:

//字符串转换小写字符
#include<iostream>
#include<string.h>
#include<stdio.h>
using namespace std;
int main()
{
char s1[50];
gets(s1);
strlwr(s1);
puts(s1);
return 0;
}

二、字符串转换大写字符strupr(char*s1)

该函数将字符串s1中的所有字符转大写。
如下:

//字符串转换大写字符
#include<iostream>
#include<string.h>
#include<stdio.h>
using namespace std;
int main()
{
char s1[50];
gets(s1);
strupr(s1);
puts(s1);
return 0;
}

三、字符串数字转双精度浮点数atof(const char * s1)

该函数将由数字组成的字符串转换成双精度浮点数,转换不成功则返回0。
如下:
//Dev C++ 5.4.0不可用

//字符串数字转双精度浮点数
#include<iostream>
#include<string.h>
#include<math.h>
#include<stdio.h>
using namespace std;
int main()
{ 
char s1[50];
double a;
gets(s1);
a=atof(s1);
cout<<a;
return 0; 
} 

四、字符串数字转整数值atoi(const char * s1)

该函数将由数字组成的字符串转换成整数,转换不成功则返回0。
如下:

//字符串数字转整数值
#include<iostream>
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
using namespace std;
int main()
{
	char s1[50];
	int a;
	gets(s1);
	a=atoi(s1);
	cout<<a;
	return 0;
} 

五、字符串数字转长整数atol(const char *s1)

该函数将由数字组成的字符串转换成长整数,转换不成功则返回0。
如下:

//字符串数字转长整数值
#include<iostream>
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
using namespace std;
int main()
{
	char s1[50];
	long int a;
	gets(s1);
	a=atol(s1);
	cout<<a;
	return 0;
} 

C++提供的string类使用非常方便,完成可以代替C程序里的字符数组。使用string类时,程序头需加#include<string>这一句。
string不是基本数据类型,不能使用C语言的输入命令scanf输入,但可以使用文件流(fstream)的方式直接读取。

2.#include<string>

如下:

一、定义string类并输出。

//定义string类
#include<string>
#include<iostream>
using namespace std;
int main()
{
	string s("hello");
	cout<<s<<endl;
	cin.get();
	return 0;
} 

二、复制字符数组。

//复制字符数组
#include<string>
#include<iostream>
using namespace std;
int main()
{
	char chs[]="hello";
	string s(chs);
	cout <<s<<endl;
	cin.get();
	return 0;
}

三、复制字符数组的一部分。

//复制字符数组的一部分
#include<string>
#include<iostream>
using namespace std;
int main()
{
	char chs[]="hello";
	string s(chs,1,3);
	cout<<s<<endl;
	cin.get();
	return 0;
}

四、复制string类。

//复制string类
#include<string>
#include<iostream>
using namespace std;
int main()
{
	string s1("hehe");
	string s2(s1);//将s1复制到s2
	cout<<s2<<endl;
	cin.get();
	return 0; 
} 

五、复制string类的一部分。

//复制string类的一部分
#include<string>
#include<iostream>
using namespace std;
int main()
{
	string s1("hehe",2,3);
	string s2(s1);
	cout<<s2<<endl;
	cin.get();
	return 0; 
} 

六、取字符数组的前N个字符。

//取字符数组的前N个字符
#include<string>
#include<iostream>
using namespace std;
int main()
{
	char chs[]="hello";
	string s(chs,3);//将chs前3个字符作为初值构造 
	cout<<s<<endl;
	cin.get();
	return 0;
}

七、string类赋初值。

//string类赋初值
#include<string>
#include<iostream>
using namespace std;
int main()
{
string s (10,'k');//分配10个字符,初值都是'k' 
cout<<s<<endl;
cin.get();
return 0;
}

八、string类赋值。

//string类赋值
#include<string>
#include<iostream>
using namespace std;
int main()
{
string s (10,'k');//分配10个字符,初值都是'k' 
cout<<s<<endl;
s="hehehehe";
s.assign("kdje");//重新赋值,s值为hehehehe 
cout<<s<<endl;
s.assign("fkdhfkdfd",5);//赋新值,s值为kdje 
cout<<s<<endl; 
cin.get();
return 0;
}

九、两string值互换。

//两string值互换
#include<string>
#include<iostream>
using namespace std;
int main()
{
string s1="aaaaaa";
string s2="bbbbbb";
s1.swap(s2);//两string值互换
cout<<"s1:"<<s1<<endl;
cout<<"s2:"<<s2<<endl; 
cin.get();
return 0;
}

十、在尾部添加字符串

//在尾部添加字符串
#include<string>
#include<iostream>
using namespace std;
int main()
{
string s="abc";
s+="def";//串尾添加字符串def
cout<<s<<endl;
s.append("1234");//append()方法可以在末尾添加字符串 
cout<<s<<endl;
s.push_back('z');//push_back()方法只能在末尾添加一个字符 
cout<<s<<endl; 
cin.get();
return 0;
}

十一、插入字符串。

//插入字符串
#include<string>
#include<iostream>
using namespace std;
int main()
{
string s="abc";
s.insert(0,"头部");//在头部插入 
s.insert(s.size(),"尾部");//在尾部插入 
s.insert(s.size()/2,"中部");//在中间插入 
cout<<s<<endl;
cin.get();
return 0;
}

十二、删除string中的一部分。

//删除string中的一部分
#include<string>
#include<iostream>
using namespace std;
int main()
{
string s="abcdefg";
s.erase(0,1);//从索引0开始删,删一个字符,及删除掉了'a'
cout<<s<<endl;
s.replace(2,3,"");//用replace方法求执行删除,即将指定范围内的字符替换成""
cout<<s<<endl; 
cin.get();
return 0;
}

十三、删除全部字符串。

//删除全部字符串
#include<string>
#include<iostream>
using namespace std;
int main()
{
string s="abcdefg";
cout<<s.length()<<endl;
s.clear();
cout<<s.length()<<endl;
s="dkjfd";
cout<<s.length()<<endl;
s.erase(0,s.length());
cout<<s.length()<<endl;
cin.get();
return 0;
}

十四、替换字符。

//替换字符
#include<string>
#include<iostream>
using namespace std;
int main()
{
string s="abcdefg";
s.replace(2,3,"123456789");//从索引2开始3个字符的字符替换成"123456789" 
cout<<s<<endl;//输出为ab123456789fg 
cin.get();
return 0;
}

十五、比较字符串。

//比较字符串
#include<string>
#include<iostream>
using namespace std;
int main()
{
string s1="abcdefg";
string s2="abcdefg";
if(s1==s2)
cout <<"s1==s2"<<endl;
else
cout<<"s1!=s2"<<endl;
if(s1 !=s2)
cout<<"s1!=s2"<<endl;
else
cout<<"s1==s2"<<endl;
if(s1>s2)
cout<<"s1>s2"<<endl;
else
cout<<"s1<=s2"<<endl;
if(s1<=s2)
cout<<"s1<=s2"<<endl;
else
cout<<"s1>s2"<<endl;
 
cin.get();
return 0;
}

十六、返回字符串长度。

//返回字符串长度
#include<string>
#include<iostream>
using namespace std;
int main()
{
string s="abcdefg";
cout<<s.size()<<endl;
cout<<s.length()<<endl;
cin.get();
return 0;
}

十七、返回字符串最大可能长度。

//返回字符串最大可能长度
#include<string>
#include<iostream>
using namespace std;
int main()
{
string s="abcdefg";
cout<<s.max_size()<<endl;
cin.get();
return 0;
}

十八、判断字符串是否为空。

//判断字符串是否为空
#include<string>
#include<iostream>
using namespace std;
int main()
{
string s;
if(s.empty())
cout<<"s 为空。"<<endl;
else
cout<<"s 不为空。"<<endl;
s=s+"abcdefg";
if(s.empty())
cout<<"s 为空。"<<endl;
else
cout<<"s 不为空。"<<endl;
cin.get();
return 0;
}

十九、返回某个子字符串。

#include<string>
#include<iostream>
using namespace std;
int main()
{
string s="abcdefg1111";
string str=s.substr(5,3);//从索引5开始3个字节 
cout<<str<<endl;//输出fgl 
cin.get();
return 0;
}

二十、查找子串。

//查找子串
#include<string>
#include<iostream>
using namespace std;
int main()
{
string s="abcdefg1111";
string pattern="fg";
int pos =s.find(pattern,0);//从索引0开始,查找符合字符串"f"的头索引 
cout<<pos<<endl;//输出5 
string str=s.substr(pos,pattern.size());//子串 
cout<<str<<endl;//输出fg 
cin.get();
return 0;
}
操作符 示例 注释
+ S+t 将串s和t连接成一个新串,注意先后
= S=t 用t更新s
+= S+=t 等价于s=s+t
== S==t 判断s与t是否相等
!= S!=t 判断s与t是否不相等
< S<t 判断s是否小于t
<= S<=t 判断s是否小于或等于t
> s>t 判断s是否大于t
>= s>=t 判断s是否大于或等于t
[] S[i] 访问串中下标为i的字符
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!