文章目录
挺久没写博客了 所以简单写一篇。可能有错欢迎指出;
在C语言中没有字符串这一个数据类型,都是用字符数组来处理字符串,而C++也是支持这种C风格的字符串。但是对与C++来说,还提供了一种自定义数据类型-string
string是C++的标准模板库STL中的一个字符串类,包含在头文件string
中,它能方便快捷地定义,操作字符串。
1.string的定义:
首先要头文件
#include<iostream>
#include<string>
using namespace std;
其次定义
string s;
string s1="hello world";
2.string常用的函数使用介绍:
第一个是关于连接两个字符串,在C语言中我们许需要用strcat()来连接,而对于C++的话可以直接使用“ +”;
判断两个字符串是否相等;
C语言中用到的是strcmp()函数,而在C++中,可以直接用 ”<“ “>” "!="来比较即可;
#include<iostream>
#include<string>
using namespace std;
string s1;
string s2;
int main()
{
cin>>s1;
cin>>s2;
if(s1<s2)
cout<<s1<<" < "<<s2<<endl;
else if(s1==s2)
cout<<s1<<" = "<<s2<<endl;
else
cout<<s1<<" > "<<s2<<endl;
return 0;
}
3. length()和size()函数 用来获取字符串的长度
s.length(); 和 s.size() 就可以了;
比如代码:
cin>>s1;
cin>>s2;
cout<<s1.length()<<endl;
cout<<s2.size()<<endl;
length()和size()函数这两个函数得到的字符串长度是一样的,都是没有最后的 '\0'
void swap(string &s);
4.交换函数swap()
swap()函数用于交换当前字符串与字符串“s”的值,它只用于string 类型的字符串,不能用于C语言的字符串,也就是char类型;
s.swap(s1) 这个里面的s和s1是字符串
s1.swap(s2);
用法例子:
#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
string s1="world";
string s2="hello";
//char a[6]="hello";用这个会报错;
s1.swap(s2);
cout<<s1<<" "<<s2<<endl;// cout<<s1<<" "<<s2<<endl;
return 0;
}
插入
5.string的插入:push_back()函数 和 insert()函数
push_back()函数:
void test4()
{
string s1;
// 尾插一个字符
s1.push_back(‘a’);
s1.push_back(‘b’);
s1.push_back(‘c’);
cout<<“s1:”<<s1<<endl; // s1:abc
insert(pos,char):
在制定的位置pos前插入字符串
s1.insert(s1.begin(),‘1’);
cout<<“s1:”<<s1<<endl; // s1:1abc
6. 截取子串substr()函数
s.substr(pos, n) 截取s中从pos开始(包括0)的n个字符的子串,并返回
s.substr(pos) 截取s中从从pos开始(包括0)到末尾的所有字符的子串,并返回
7.替换子串
s.replace(pos, n, s1) 用s1替换s中从pos开始(包括0)的n个字符的子串
8.查找子串
s.find(s1) 查找s中第一次出现s1的位置,并返回(包括0)
s.rfind(s1) 查找s中最后次出现s1的位置,并返回(包括0)
s.find_first_of(s1) 查找在s1中任意一个字符在s中第一次出现的位置,并返回(包括0)
s.find_last_of(s1) 查找在s1中任意一个字符在s中最后一次出现的位置,并返回(包括0)
s.fin_first_not_of(s1) 查找s中第一个不属于s1中的字符的位置,并返回(包括0)
s.fin_last_not_of(s1) 查找s中最后一个不属于s1中的字符的位置,并返回(包括0)