<string>头文件常用成员函数
之前说过 string和vector一样,也是一种顺序容器,并且它也自带成员函数,用法和vector的成员函数差不多,不过它只能用来存放字符,也就是字符串。
在c++中,<string>基本上已经包含在<iostream>里面了,但即便如此,在我们用到string类的时候还是要加上头文件<string>的。
下面介绍一下string对象常用的成员函数。
1.构造函数,有三个常用的
(1) string str1="hello world";
(2) string str2("abcde");
(3) string *str3=new string("12343543");
2. 获取字符串长度
int len1=str1.length(); //获取字符串长度
int len2=str1.size(); //获取string这个容器对象中元素的个数
3. 用 '+' 串联字符串
在<string>头文件里对 '+' 进行了重载,可以用来串联字符串
string str4=str1+str2+str3;
4. [ ] 随机访问
在<string>头文件里对 [ ] 进行了重载,可以用来对字符串对象进行随机访问str1[3],包括存取甚至修改操作,类似于数组。
5. 常用的成员函数
push_back();向string容器的末尾位置添加字符
push_pop(); 把string容器里的末尾元素弹出容器,即删除操作
begin();返回一个指向容器中第一个元素的迭代器
end();返回一个指向容器中最后一个元素的下一个位置的迭代器
rebegin();反向迭代,返回指向最后一个元素的下一个位置的迭代器
rend(); 反向迭代,返回指向第一个元素的的迭代器
front();返回容器中第一个元素的引用,可以对其进行存取及修改操作
back();返回容器中最后一个元素的引用,可以对其进行存取及修改操作
at();此成员函数有参数,参数是下标。的作用类似于[ ]操作符,用来对指定下标位置的元素进行随机访问,可进行存取及修改操作
resize(int n, char c);调整容器有效数据尺寸,若尺寸变大,则自动截掉多余的数据;若尺寸变大,则空出的用该函数的第二个参数填充,会影响容器的size。
reserve();为容器预留足够的空间,避免了不必要的重复分配,分配空间大于等于函数的参数,会影响capacity
find(str, int start);<string>文件对find()进行了重载。在只有一个参数的时候表示在当前字符串里查找某个字符或某个子串,查找成功返回首次出现的位置,查找不成功返回-1。
在有第二个参数的时候且该参数是int型,即指定了查找的起始位置start,表示从该位置start开始查找。
copy();用于拷贝。原型为:int copy(char* buffer, int n, int start ) const;把当前字符串中以start位置开始的n个字符复制到到以buffer为起始位置的字符数组中,返回实际拷贝的数目
str1.swap(str2);交换字符串str1和str2
clear();清空当前string容器
empty();判断容器是否为空,为空返回1,非空返回0
c_str();返回一个以NULL结束的c语言字符串。原型为:const char* c_str()const;
erase();删除字符串中的字符,它既可以通过下标也可以通过迭代器来删除指定位置处的字符,甚至可以删除某个区间内的所有字符。由于erase()有多种重载,所以给出了具体用法,看下面代码
#include<iostream>
#include<string>
using namespace std; int main()
{
string str1(""),str2("");
str1.erase(,); //第一个参数为起始删除位置,第二个参数为删除的元素个数。即从下标为6的位置开始删除,删除1个元素
cout<<str1<<"\n";
str1.erase(,); //第一个参数为起始删除位置,第二个参数为删除的元素个数。即从下标为6的位置开始删除,删除2个元素
cout<<str1<<"\n";
str1.erase(); //从下标为1的位置开始删除,删除下标为1及1之后的所有元素
cout<<str1<<"\n"; string::iterator iter1,iter2;
iter2=str2.end()-;
str2.erase(iter2); //删除迭代器所指位置的元素
cout<<str2<<"\n";
iter1=str2.begin();
iter2=str2.begin()+;
str2.erase(iter1,iter2); //删除两个迭代器所指元素之间的所有元素
cout<<str2<<"\n";
return ;
}
结果如下:

insert();向当前字符串中指定位置处插入另外一个字符串,insert()有多种重载,具体用法看代码
#include<iostream>
#include<string>
using namespace std; int main()
{
string str1(""),str2("abcde"); str1.insert(,str2); //把str2插入到str1中下标为8的位置,第一个参数8是插入位置
cout<<str1<<"\n";
str1.insert(,"hello world"); //把指定字符串插入到str1中下标为4的位置
cout<<str1<<"\n\n"; str1.insert(,"nihao",); //在str1中下标为3的位置插入字符串的前4个字符
cout<<str1<<"\n\n"; str1.insert(,str2,,); //把str2中下标从0开始的前3个字符插入到str1中
cout<<str1<<"\n\n"; string::iterator iter1,iter2,iter3;
iter1=str2.begin();
str2.insert(iter1,''); //在iter1所指的位置插入字符'6'
cout<<str2<<"\n";
iter1=str2.end()-;
str2.insert(iter1,,''); //在iter1所指的位置插入3个字符'8'
cout<<str2<<"\n\n"; string str3("xyz");
iter1=str2.end()-;
iter2=str3.begin();
iter3=str3.end()-;
str2.insert(iter1,iter2,iter3); //把iter2和iter3所指位置之间的所有字符都插入到str2中iter1所指的位置
cout<<str2<<"\n";
return ;
}
结果如下:

<string>头文件常用成员函数的更多相关文章
- string常用成员函数
string常用成员函数 std::string::clear Clear string Erases the contents of the string, which becomes an emp ...
- [C++ Primer Plus] 零散知识点(一)、输入函数(cin,cin.get,cin.getline等)+string头文件辨析
本文几乎照搬http://www.cnblogs.com/luolizhi/p/5746775.html博客,只修改了一点点.不知道怎么转发过来,尴尬... 学C++的时候,这几个输入函数弄的有点迷糊 ...
- QString:常用成员函数总结
QString是Qt中使用频率最高的几种数据类型之一,主要在于其提供了大量功能强大的成员函数,这里重点介绍一些常用的成员函数: 一.字符串处理相关 1.1 split() (拆分字符串) split( ...
- 在c++中引用c头文件里的函数
在c++中有的时候想要引用c头文件里的函数有两种方法;就拿c语言里面的<stdlib.h>举例 在c中我们想要用<stdlib.h>里的函数,形式为:#include<s ...
- 头文件与main函数
头文件 1.为什么要使用头文件? 程序如戏 程序中有很多元素(std::cout, system), 都是一个个演员 但是他们之间都互不认识, 但是却要一起合作, 强行编译, 就会导致错误! 得预先介 ...
- C++ string头文件
转载自https://blog.csdn.net/superna666/article/details/52809007/ 作者 zhenzhenjiajia888 标准c++中string类函数介绍 ...
- C语言string.h中常用字符函数介绍
原文:http://www.cnblogs.com/xuwenmin888/archive/2013/05/03/3057883.html strcpy 函数名: strcpy 功 能: 拷贝一个字符 ...
- VS2010中如果忘记函数所在的头文件或者忘记函数的输入输出参数类型怎么办?
先随便找一个熟悉的函数,右击-转到定义,然后写出目标函数,右击-转到定义
- CString和string头文件
在使用了MFC库的工程中CString可以直接使用,在没有使用MFC库的工程中加入#include <atlstr.h> 要使用STL里的string,要加入#include <st ...
随机推荐
- Python学习笔记:函数和变量详解
一.面向对象:将客观世界的事物抽象成计算机中的数据结构 类:用class定义,这是当前编程的重点范式,以后会单独介绍. 二.函数编程:逻辑结构化和过程化的一种编程方法 1.函数-->用def定义 ...
- Pytest系列(5) - 用例执行的几种状态
如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 用例执行状态 用例执行完成后,每条 ...
- 汇编学习二-VB(常见函数分析)
VB代码如下所示 push ebp 00401FF1 . 8BEC mov ebp,esp 00401FF3 . 83EC 0C sub esp,0xC push <jmp.&MSVBV ...
- 牛客寒假基础集训营 | Day1 E-rin和快速迭代(暴力 + 优化)
E-rin和快速迭代 题目描述 rin最近喜欢上了数论. 然而数论实在太复杂了,她只能研究一些简单的问题. 这天,她在研究正整数因子个数的时候,想到了一个"快速迭代"算法.设 f( ...
- 记一次Windb死锁排查
正在开会,突然线上站点线程数破千.然后一群人现场dump分析. 先看一眼线程运行状态 !eeversion 发现CPU占用并不高,19%,937条线程正在运行. 看看他们都在干什么. ~* e !cl ...
- DALI开关
DALI开关简介 一:符合协议IEC 62386 二:DALI总线取电,低压操作,安全可靠 三:可以开,关,调光,调色温 四:DALI总线取电,低压操作,安全可靠 五:可按压开,关,旋转调光,调光器耐 ...
- php--一些有用的Laravel辅助函数
str_start()/str_finish() 将指定值添加到字符串的开头/结尾(当不是以该值开头/结尾时) blank() 判断给定的值是否为「空」 collect() 根据给定的数组创建一个集合 ...
- C/C++ 数据精确度的设置
#include<iostream>#include<iomanip> //此库为代码最后一行快捷设置数据格式需要用的的库 #include<math.h>usin ...
- Python高级特性-迭代器和生成器
迭代器 Python中可迭代对象(iterable)通俗指可直接作用与For循环的数据对象,如Python中的集合数据类型,字符串(str),列表(list),元组(tuple),集合(set),字典 ...
- String 对象-->charAt() 方法
1.定义和用法 charAt() 方法获取指定下标的字符,下标从0开始 语法: string.charAt(index) 参数: index:指定的下标 举例:获取下标为2的字符 var str = ...