字符串与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的字符 |
来源:CSDN
作者:c l o u d
链接:https://blog.csdn.net/weixin_41096569/article/details/104672414