[STL] string的常见用法
来源:互联网 发布:ubuntu命令行模式乱码 编辑:程序博客网 时间:2024/05/16 20:28
头文件:string(不是string.h,这是两个不同的头文件)
在std命名空间内(using namespace std;)
string的定义
string str;
也可以直接初始化:
string str = “Hello World!”
注:要读入和输出整个字符串,必须使用cin和cout。
string中内容的访问
通过下标访问
str[i]
c_str()可以将string类型转换成char[]类型输出,eg:
#include<iostream>#include<string>using namespace std;int main(){ string str = "abcdef"; printf("%s\n",str.c_str()); return 0;}
通过迭代器访问
一般通过下标访问就可以满足访问要求,但是有些函数,比如insert()和erase()则要求以迭代器为参数。
string的迭代器不需要参数:
string::iterator it;
这样就可以通过*it访问string中的每一位:
#include<iostream>#include<string>using namespace std;int main(){ string str = "abcdef"; for(string::iterator it = str.begin(); it != str.end(); it++){ printf("%c",*it); } return 0;}
注:string的迭代器支持进行加减某个数的操作,例如str.begin()+5是可行的。
string常用函数
1. operator +=
字符串拼接
2. compare operator
==、!=、<、<=、>、>=,按字典序排
3. length() / size()
返回string的长度,即存放的字符数
4. insert()
insert()函数有很多种写法,记录几种常见写法:
(1) insert(pos, string) :在pos号位置插入字符串string
(2)insert(it, it2, it3):it为原字符串的插入为止,it2和it3为待插字符串的首位迭代器,eg:
#include<iostream>#include<string>using namespace std;int main(){ string str = "abcxyz", str2 = "opq"; //str为原字符串,str2为待插字符串 //在str的3号位置(c和x之间)插入str2 str.insert(str.begin()+3, str2.begin(), str2.end()); cout << str << endl; return 0;}
5. erase()
erase()有两种用法:删除单个元素、删除一个区间内的元素。
(1)删除单个元素:str.erase(it)
#include<iostream>#include<string>using namespace std;int main(){ string str = "abcxyz"; str.erase(str.begin()+3); //删除了x cout << str << endl; return 0;}
(2)删除一个区间内的元素
有两种方法。
(2a) str.erase(first, last),first为需要删除区间的起始迭代器,last为需要删除的区间的末尾迭代器的下一个地址,即[first, last)。
(2b) str.erase(pos, length),pos为要开始删除的起始位置,length为删除字符个数。
6. clear()
clear()用以清空string中的数据
#include<iostream>#include<string>using namespace std;int main(){ string str = "abcxyz"; cout << str.length() << ' ' << str << endl; str.clear(); //删除了x cout << str.length() << ' ' << str << endl; return 0;}
7. substr()
substr(pos, len),返回从pos开始,长度为len的子串。
8. string::npos
string::npos是一个常数,其本身的值为-1,但由于是unsigend_int类型,因此实际上也可以认为是unsigend_int类型的最大值。
string::npos用以作为find函数失配使的返回值。
9. find()
(9a) str.find(str2),当str2是str的子串时,返回str2在str中第一次出现的位置;如果str2不是str的子串,返回string::npos。
(9b) str.find(str2, pos),从str的pos位开始匹配str2,返回值同上。
10. replace()
(10a) str.replace(pos, len, str2),把str从pos位开始,长度为len的子串替换为str2。
(10b) str.replace(it1, it2, str2),把str的迭代器[it1, it2)范围内的子串替换为str2。
- [STL] string的常见用法
- stl---<string>的用法
- STL-string的用法
- C++ STL之string常见用法
- string 的常见用法
- C++ STL的常见用法
- C++ STL的常见用法
- C++/STL std::string 的用法
- C++中string的用法STL
- c++ stl string类的基本用法
- STL中string的基本用法范例
- C++STL之string的用法总结
- STL中string类的用法总结
- C++ STL常见用法
- C++ STL 常见用法
- STL -string 用法
- STL--string用法(1)
- STL--string用法(2)
- HTML和JavaScript
- poj 1182 食物链 (并查集 经典)
- arm简介
- spark mllib实现 广告点击率预测
- 矩阵快速幂
- [STL] string的常见用法
- Javascript原型链和原型继承之浅析
- 分布式缓存应用
- UVA 673
- 手机信息页面
- Cocos2dx3.10在Windows7下控制台编译apk的问题
- 排序算法一:快速排序
- 程序猿学习笔记(三)
- Linux运维学习之路——Linux的起源