C++STL中的string容器

string**容器基本概念

C 风格字符串 ( 以空字符结尾的字符数组 ) 太过复杂难于掌握,不适合大程序的开发, 所以 C++ 标准库定义了一种 string 类,定义在头文件。
String 和 c 风格字符串对比:
u Char*是一个指针,
String 是一个类 string 封装了 char ,管理这个字符串,是一个 char 型的容器。
u String 封装了很多实用的成员方法
查找 find,拷贝 copy ,删除 delete 替换 replace ,插入 insert
u 不用考虑内存释放和越界
string 管理 char* 所分配的内存。每一次 string 的复制,取值都由 string 类负责维护,不用担心复制越界和取值越界等。

string 构造函数

string();//创建一个空的字符串 例如 : string str;
string(const string& str);//使用一个 string 对象初始化另一个 string 对象
string(const char* s);//使用字符串 s 初始化
string(int n, char c);//使用 n 个字符 c 初始化

string 基本赋值操作

string& operator =( const char * s); //char* 类型字符串 赋值给当前的字符串
string& operator =( const string &s); // 把字符串 s 赋给当前的字符串
string& operator =( char c); // 字符赋值给当前的字符串
string& assign( const char *s); // 把字符串 s 赋给当前的字符串
string& assign( const char *s, int n); // 把字符串 s 的前 n 个字符赋给当前的字 符串
string& assign( const string &s); // 把字符串 s 赋给当前字符串
string& assign( int n, char c); // n 个字符 c 赋给当前字符串
string& assign( const string &s, int start, int n); // s start 开始 n 字符赋值给字符串

string 存取字符操作

char & operator []( int n); // 通过 [] 方式取字符
char & at( int n); // 通过 at 方法获取字符

string 拼接操作

string& operator +=( const string& str); // 重载 += 操作符
string& operator +=( const char * str); // 重载 += 操作符
string& operator +=( const char c); // 重载 += 操作符
string& append( const char *s); // 把字符串 s 连接到当前字符串结尾
string& append( const char *s, int n); // 把字符串 s 的前 n 个字符连接到当前字 符串结尾
string& append( const string &s); // operator+=()
string& append( const string &s, int pos, int n); // 把字符串 s 中从 pos 开始 n 个字符连接到当前字符串结尾
string& append( int n, char c); // 在当前字符串结尾添加 n 个字符 c string 查找和替换
int find( const string& str, int pos = 0 ) const ; // 查找 str 第一次出现位置 , pos 开始查找
int find( const char * s, int pos = 0 ) const ; // 查找 s 第一次出现位置 , po s 开始查找
int find( const char * s, int pos, int n) const ; // pos 位置查找 s 的前 n 个字符第一次位置
int find( const char c, int pos = 0 ) const ; // 查找字符 c 第一次出现位置
int rfind( const string& str, int pos = npos) const ; // 查找 str 最后一次位 , pos 开始查找
int rfind( const char * s, int pos = npos) const ; // 查找 s 最后一次出现位置 , pos 开始查找
int rfind( const char * s, int pos, int n) const ; // pos 查找 s 的前 n 个字符 最后一次位置
int rfind( const char c, int pos = 0 ) const ; // 查找字符 c 最后一次出现位置
string& replace( int pos, int n, const string& str); // 替换从 pos 开始 n 字符为字符串 str
string& replace( int pos, int n, const char * s); // 替换从 pos 开始的 n 个字 符为字符串 s

string 比较操作

/*
compare 函数在 > 时返回 1 < 时返回 -1 == 时返回 0
比较区分大小写,比较时参考字典顺序,排越前面的越小。
大写的 A 比小写的 a 小。
*/
int compare( const string &s) const ; // 与字符串 s 比较
int compare( const char *s) const ; // 与字符串 s 比较 string 子串
string substr( int pos = 0 , int n = npos) const ; // 返回由 pos 开始的 n 个字符 组成的字符串

string 插入和删除操作

string& insert( int pos, const char * s); // 插入字符串
string& insert( int pos, const string& str); // 插入字符串
string& insert( int pos, int n, char c); // 在指定位置插入 n 个字符 c
string& erase( int pos, int n = npos); // 删除从 Pos 开始的 n 个字符

string 和 c-style 字符串转换

//string 转 char*
string str = "itcast" ;
const char * cstr = str.c_str();
//char* 转 string
char * s = "itcast" ;
string str(s);
在 c++ 中存在一个从 const char string 的隐式类型转换,却不存在从一个 string 对象到 Cstring 的自动类型转换。对于 string 类型的字符串,可以通过 cstr() 函数 返回 string 对象对应的 C_string. 通常,程序员在整个程序中应坚持使用 string 类对象,直到必须将内容转化为 char 时才将其转换为 C_string.
提示 :
为了修改 string 字符串的内容,下标操作符 [] 和 at 都会返回字符的引用。但当字 符串的内存被重新分配之后,可能发生错误.
string s = "abcdefg" ;
char & a = s[ 2 ];
char & b = s[ 3 ];
a = '1' ;
b = '2' ;
cout << s << endl;
cout << ( int *)s.c_str() << endl;
s = "pppppppppppppppppppppppp" ;
//a = '1';
//b = '2';
cout << s << endl;
cout << ( int *)s.c_str() << endl;

相关推荐
J不A秃V头A2 分钟前
Python爬虫:获取国家货币编码、货币名称
开发语言·爬虫·python
SRY122404193 小时前
javaSE面试题
java·开发语言·面试
李元豪3 小时前
【智鹿空间】c++实现了一个简单的链表数据结构 MyList,其中包含基本的 Get 和 Modify 操作,
数据结构·c++·链表
无尽的大道3 小时前
Java 泛型详解:参数化类型的强大之处
java·开发语言
ZIM学编程3 小时前
Java基础Day-Sixteen
java·开发语言·windows
放逐者-保持本心,方可放逐3 小时前
react 组件应用
开发语言·前端·javascript·react.js·前端框架
UestcXiye3 小时前
《TCP/IP网络编程》学习笔记 | Chapter 9:套接字的多种可选项
c++·计算机网络·ip·tcp
一丝晨光4 小时前
编译器、IDE对C/C++新标准的支持
c语言·开发语言·c++·ide·msvc·visual studio·gcc
阮少年、4 小时前
java后台生成模拟聊天截图并返回给前端
java·开发语言·前端
代码小鑫4 小时前
A027-基于Spring Boot的农事管理系统
java·开发语言·数据库·spring boot·后端·毕业设计