String类对象

String类

1.意义

  • 1.1为了方便字符串的操作,C标准库提供了一些str系列的库函数。
  • 1.2典型面试题
    字符串转整形数字
    字符串相加

2.标准库中的string类

2.1string类

  • string是表示字符串的字符串类
  • 该类接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。
  • string类在底层实际是:basic_string模板类的别名,typdef basic_stringstring;
  • 不能操作多字节或变长字符的序列

2.2常用接口

2.2.1常见构造

  • string(),构造string类对象,即空字符串
  • string(const char* s),用C-string来创造string类对象;
  • string(size_t n,char c),string类对象中包含N个字符串c
  • string(const string& s),拷贝构造函数

2.2.2string类对象的容量操作

函数名 功能
size 返回字符串的有效字符长度
length 返回字符串的有效字符长度
capacity 返回空间总大小
empty 检测字符串释放为空串,是返回true,否则返回false
clear 清空有效字符
reserve 为字符串预留空间
resize 将有效字符的个数改成n个,多出的空间用字符c填充

2.3定义与初始化

定义:
C语言 :char s[3]={‘a’,‘b’,‘c’};
string类:string str;
初始化:
str = “11123”;
str=“adbhbhf”;
定义同时初始化
string str=s;

2.4常用操作

2.4.1插入

+、str.append();//参数为字符串或者string类对象
str.insert(n,s);//在字符串第n个位置插入字符串或者string对象s
str.insert(n,s,m);//在字符串第n个位置插入s的m个字符
str.insert(n,m,c);//在字符串第n个位置插入m个字符c
//数字n,m可用迭代器替代

2.4.2删除

str.erase(5);//删除下标为5(包括5)之后的所有字符
str.erase(1,4);//删除下标1-4的所有字符
str.erase(str.begin());//删除代代器所指的字符
str.erase(str.begin(),strbegin ()+3);//删除代代器区间内的字符

//清空字符串
str = “”;//等于空白

2.4.3替换

str.replace(n,m,s);//把m位置后的n个元素替换为s
str.replace(n,m,s,x);//把m位置后的n个元素替换为s的前x个字符
str.replace(n,m,x,c);//把m位置后的n个元素替换为x个字符c
str.replace(n,m,s,x,y);//把m位置后的n个元素替换为s中x往后y个字符

2.4.4查找

str.find(c);//返回str中第一次出现字符c的位置
str.find(s);//返回str中第一次出现字符串s的位置
str.rfind(c);//返回str中最后一次出现字符c的位置
                  //与返回迭代器类似
str.rfind(s);//返回str中最后一次出现字符串s的位置

2.4.5比较

stra.compare();//参数可以是字符串或者string类对象
//大于返回1,等于返回0,小于返回-1

3.1字符串与数值转换
3.1.1字符串->数值

sscanf(s,"%d",&a);
double stod(const string &s);
//库函数
stoi();
atoi();
int i = atoi(s.c.str());//string先转char*再使用atoi

3.1.2数值->字符串

itoa();//C语言库函数
to_string();//c++

你可能感兴趣的:(STL,string)