C++字符串string常用函数使用说明

来源:互联网 发布:手机淘宝怎么分期 编辑:程序博客网 时间:2024/05/18 01:07

在c++中,要使用string,需要在文件头中加入以下两个声明:
#include<string>
using namespace std;
传统c字符串使用'\0'作为结束字符,而c++字符串string不使用这种方式来处理字符串
c++字符串原型如下
typedef basic_string string; 
typedef basic_string wstring; //宽字符
若要使用需引入string标头档,basic_string这个版样类别一般称为基本字符串类别

字符串的宣告
string s; 空字符串,string()

string s=""; 空字符串

string s="String"; 包含"String"的字符串 

string s("String"); 包含"String"的字符串,string(char*) 

string s(5,'A'); 包含5个A字符串的字符串AAAAA,string(int,char) 

string s=r; r为string字符串,复制一份r的字符串做为字符串,string(const string&)

string s(r,2,4); r为string字符串,复制r[2]开始的4个字符做为字符串,string(const string&,int,int) 

string s(r.begin()+2,r.end()); r为string字符串,复制r[0+2]开始到末端字符做为字符串,string(const string&,string::iterator,string::iterator) 

string s(r+2,4); r为传统字符串,r+2的char位置开始4个字符做为字符串,string(char*,int)不能使用单一字符及数字做为初始化,例:
string s='A';
string s=20;

string迭代器
string::iterator iter;
string::iterator被定义在string的公用区域里,iter的作用有如指标一般能利用+,-,++,--改变所指向的字符,也能用*取出字符值
若字符串为常数字符串,可使用string::const_iterator,和常数特性一样不能做为修改

string类别函式
string::iterator begin() 回传开头位置
string::iterator end() 回传结束位置
int size() 回传字符串长度 
int length() 回传字符串长度
string::npos 其值为系统代表的最大正整数
operator[] 下标运算子,与传统字符串操作的效果一样,用在等号左边或右边都可以
at() 与下标运算子一样,但会检查是否超出下标范围,若超出会立即终止
operator= 指定运算子,可指定为字符,传统字符串,或另一个string
c_str() 以传统字符串型式输出
operator== 以下七个皆为用于string比较的运算子
operator!=
operator>
operator>=
operator<
operator<=
operator==
operator+ 用于string相加,其中一个操作数必须是string,另一个操作数可以字符或传统字符串
operator+= 用于string相加,也可以是字符或传统字符串和string相加
append(string) 字符串相加,与一个string相加
append(string::iterator,string::iterator)字符串相加,与迭代器的范围字符串相加
append(string,int,int) 字符串相加,与一个string相加,但指定其由第几个脚标到第几个脚标范围内的字符串相加
/************************************************************
这类东西的使用方法都是string a,b;  a.append(b);
给一段测试代码:
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
void main()
{
string a,b;
getline(cin,a,'z');
b="95271314520";
a.insert(3,b,5,b.size());//5指的是b[5],也就是第6个
cout<<a<<endl;
//cout<<b<<endl;

}
*******************************************************************/
append(char*) 字符串相加,与一个传统字符串相加
append(char*,int) 字符串相加,与一个传统字符串相加,并指定相加的字数范围
append(int,char) 字符串相加,相加多少个字符
insert(int,string) 插入字符串,从第一个参数的脚标开始插入
insert(int,string,int,int) 插入字符串,以第一个参数的脚标开始插入,插入的范围是三和四参数范围的脚标
insert(string::iterator,string::iterator,string::iterator)插入字符串,从第一个迭代器插入,插入范围是第二和第三个迭代器的范围
insert(int,char*) 插入字符串,以第一个参数的脚标开始插入
insert(int,char*,int) 插入字符串,以第一个参数的脚标开始插入,第三个参数为字符数
insert(int,int,char) 插入字符串,以第一个参数的脚标开始插入,此为插入n个字符
insert(string::iterator,char) 插入字符串,以第一个参数的迭代器开始插入,此为插入一个字符
//除了参数中有使用迭代器的intert()以外,其它均会回传字件参考型别
substr(int) 复制子字符串,由参数的脚标开始到结束被复制出来
substr(int,int) 复制子字符串,由第一个参数的走标开始第二个参数个字符数,复制出来

//find函数的返回值是int;返回的是下角标的值,比如1234中找4,返回值是3;
find( ,int) 搜寻子字符串,第一个参数可以是string,传统字符串或字符,第二个参数代表从第几个脚标位置开始搜寻
find(char*,int,int) 针对传统字符串的搜寻子字符串,第三个参数代表前几个字符,以前n个字符做为搜寻
rfind() 由后方开始搜寻,参数请参考find()不同的是,第二个参数的意义为由第二个参数往前搜寻
find_first_of() 搜寻字符,回传第一个找到的位置,参数请参考find()
find_last_of() 搜寻字符,回传最后一个找到的位置,参数请参考find()
find_first_not_of() 搜寻字符,回传第一个不是参数里的字符的位置,参数请参考find()
find_last_not_of() 搜寻字符,回传最后一个不是参数里的字符的位置,参数请参考find()
//find若找不到符合条件,会回传string::npos
//find()与Rfind()是搜寻字符串,另外四个是搜寻字符,只要是符合第一个参数里有的字符就算是了 例:
//搜寻只要是数字的第一个字符位置str.find_first_of("0123456789");
//搜寻各种左括号的第一个字符位置str.find_first_of("[{(<");
/********************************************************************************
插播一个例子:
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
void main()
{
string a,b;
getline(cin,a,'z');//输入0123k34567m89z;
b=a.substr (3,8);//插入a[3]-a[8],即3k34567m8;
cout<<b<<endl;
b.insert (2,a,a.find('k',2),a.find('m',2));//a.find('k',0)=3,a.find('m',0)=9;注:find返回的值仅与说查找的内容在原数组中的位置有关,与从哪儿开始查找无关。
cout<<a<<endl;
cout<<b<<endl;
}

 黑框输出的情况如下:

| 0123k34567m89z
| 3k34567m
| 0123k34567m89
| 3kk34567m8934567m
| Press any key to continue

/**********************************************************************************
replace(int,int,string) 取代子字符串,这里的五个取代子字符串前两个参数都是从第几个脚标开始的几个字符数开始取代
replace(int,int,string,int,int)取代子字符串,要取代的字符串是第三个参数的第几个脚标开始的几个字符数
replace(int,int,char*) 用于传统字符串
replace(int,int,char*,int) 用于传统字符串,第四个参收是字符数
replace(int,int,int,char) 取代的字符串为n(参3)个字符(参4)
replace(string::iterator,string::iterator,string)使用迭代器指定被取代的范围
replace(string::iterator,string::iterator,char*)
replace(string::iterator,string::iterator,char*,int)最后一个参数代表字符数
replace(string::iterator,string::iterator,int,char)取代n个字符
erase() 清除所有字符串
erase(int) 清除参数1脚标以后的字符串
erase(int,int) 清除参数1脚标以后的n(参2)个字符数
erase(string::iterator) 清除迭代器所指的以后的字符串 
erase(string::iterator,string::iterator)清除两迭代器所指范围的字符串
bool empty() 检查是否为空字符串
resize(size_type n,char ch) 调整字符串长度为n,如果n比原字符串大则多出的字符补上ch字符,若是小则去除多余的字符串 
swap(string& a,string& b) 交换两字符串

原创粉丝点击