C++ 常用容器系列【一】:string的用法总结

//============================================================================

写这篇文章的目的有两个:一是作为自己的学习笔记,总结归纳学到的知识,同时希望能和大家讨论学习;二是分享出来给后来的人铺个路,让他们能更快的掌握本文所涉及的内容。本文尽可能的使用直白易懂的语言方式,尤其适用于初学者。

作者水平有限,错误在所难免,如果您发现文中错误,还请告知我。

//============================================================================

What?

首先我们先说什么是string,string是C++标准库的一个重要的部分,主要用于字符串处理。可以使用输入输出流方式直接进行操作,也可以通过文件等手段进行操作。简而言之就是操作字符串的。

Why?

我们都知道C和C++都有char类型来操作字符串,那我们为什么要使用string呢?原因很简单:因为string类型封装了许多非常好用的函数在其中,很多功能用char类型要写十几行甚至几十行的功能,用string类型的函数也许一行就搞定了,使用起来非常的简洁方便,让你的代码更加优雅。

How?

1、头文件

使用string类要包括<string>,对于流操作还需要包括<iostream>,还需要std命名空间。
#include <iostream>
#include <string>
use namespace std;
需要注意一下的是别把两个包含文件误加上了.h后缀。

2、声明初始化

声明:string str; 或 string str = "hello world"; 
这两种方式都是可以的,因为string类型有默认构造函数。当然还有其他的声明方式,这里就举最常用的方法。

3、常用操作

(1)插入

来看看函数原型(很多初学者都不愿意看MSDN的函数原型,但要想理解一个函数,最好的方法就是看他的原型)
string& insert(size_t pos, const string& str);	//插入一个str的拷贝
string& insert(size_t pos, const string& str, size_t subpos, size_t sublen);	//插入str从subpos开始的sublen个字符
string& insert(size_t pos, const char* s);	//插入一个char型的字符串指针
string& insert(size_t pos, const char* s, size_t n);	//插入char型字符串指针的前n个字符
string& insert(size_t pos, size_t n, char c);	//插入n个字符c
调用方式就和函数声明一样调用即可,如第一种方式:
string targetStr;
string sourceStr = "test";
targetStr.insert(0, sourceStr);
cout << targetStr << endl;
其他的函数调用就不一一举例了。

(2)访问

最简单的方式:通过索引来访问数据。例:str[2],表示str的第3个字符。
还可以通过迭代器访问,也挺常用的,但在这篇里就不讲了,在vector篇讲吧。

(3)修改

同访问方法,直接覆写就可以了。还有例如元素交换,替换等修改元素的操作,我放在下一个小节中说。

(4)算法函数

  • string的属性描述
int capacity()const;    //返回当前容量(即string中不必增加内存即可存放的元素个数)
int max_size()const;    //返回string对象中可存放的最大字符串的长度
int size()const;        //返回当前字符串的大小
int length()const;       //返回当前字符串的长度
bool empty()const;        //当前字符串是否为空
void resize(int len, char c);//把字符串当前大小置为len,并用字符c填充不足的部分
  • string的拼接
string &operator+=(const string &s);	//把字符串s连接到当前字符串的结尾 
string &append(const char *s);          //把c类型字符串s连接到当前字符串结尾
//append还有很多形式的原型,有兴趣的读者可以查看MSDN
  • string的比较
运算符"==",">", "<", ">=", "<=", "!="均被重载类重载了,可以直接用于字符串的比较;
  • string的修改替换等操作
string substr(int pos = 0, int n = npos) const;//返回pos开始的n个字符组成的字符串
void swap(string &s2);    //交换当前字符串与s2的值
string &replace(int p0, int n0, const char *s);//删除从p0开始的n0个字符,然后在p0处插入串s
string &replace(int p0, int n0, const char *s, int n);//删除p0开始的n0个字符,然后在p0处插入字符串s的前n个字符
string &replace(int p0, int n0, const string &s);//删除从p0开始的n0个字符,然后在p0处插入串s
//replace还有很多形式的原型,有兴趣的读者可以查看MSDN



  • string类的查找函数
int find(char c, int pos = 0) const;//从pos开始查找字符c在当前字符串的位置
//查找成功时返回所在位置,失败返回string::npos的值 
int rfind(char c, int pos = npos) const;//从pos开始从后向前查找字符c在当前串中的位置
//从pos开始从后向前查找字符串s中前n个字符组成的字符串在当前串中的位置,成功返回所在位置,失败时返回string::npos的值 
int find_first_of(char c, int pos = 0) const;//从pos开始查找字符c第一次出现的位置
//从pos开始查找当前串中第一个在s的前n个字符组成的数组里的字符的位置。查找失败返回string::npos 
int find_first_not_of(char c, int pos = 0) const;
//从当前串中查找第一个不在串s中的字符出现的位置,失败返回string::npos 
int find_last_of(char c, int pos = npos) const;
int find_last_not_of(char c, int pos = npos) const;
//find_last_of和find_last_not_of与find_first_of和find_first_not_of相似,只不过是从后向前查找
//查找函数还有很多形式的原型,有兴趣的读者可以查看MSDN

结束语

string类可能是学习C++最先接触的容器,其中有很多方便的功能,本篇中提到的基本都是常用的函数(并且是常用的原型),掌握了这些内容string类使用起来就会比较顺手了。
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值