C++ String 常见API

String

C-style 本质上是一个 char*

C++ 中string 是一个类 , 但这其中封装了 char* ,一个char* 容器,本质就是一个动态的char数组

一、String 创建

#include<string>
using namespace std;
int main(){
    string str;
}
/* 构造函数 */
string();   //默认构造,创建空
string(const string& str); //拷贝构造,用str 初始化 另一个str
string(const char* s); //用 C-style 初始化 str
string(int n,char* s); //C-string 的 n个字符初始化

二、String 相关 API

- 截取
str.substr(pos, n);    //截取s中从pos开始(包括pos)的n个字符的子串,并返回
str.substr(pos);       //截取s中从从pos开始(包括pos)到末尾的所有字符的子串,并返回

str="0123456";
cout<<str.substr(1,3)<<endl; // "123"

- 查找 : [] & at & find函数
/* [] & at */

char& operator[](int n); // 越界程序强制停止;
char& at(int n);         // 越界抛出异常,可以获取


/* find 函数 */
int find(const string& str,int pos=0)const;  //查 字符串 在当前第一次出现位置,从 pos 开始
int find(const char* s,int pos=0)const;      //同上查 C-style
int find(const char* s,int pos=0,int n)const;////从pos开始前n个字符在当前串中的位置
int find(const char c,int pos=0)const;       //查 字符 在当前第一次出现位置


// 查找失败返回 -1 , -1 已经封装为string静态成员常量

string::npos       // static const size_t npos =-1;

find  //查找第一次出现的位置,
rfind //查最后一次 (反向查找)

- 删除
string& erase(int pos,int n=npos); // 删除从 pos 开始的n个
- 拼接
/* 重载‘+=’运算符(这将非常的方便) */
string& operator+=(const string& str);
string& operator+=(const char* s);
string& operator+=(const char c);

/* 函数调用形式 */
string& append(const char* s);
string& append(const char* s,int n); // 前 n个添加
string& append(const string& str);
string& append(const string& str,int pos,int n); //添加 str 从 pos 开始的 n 个
string& append(int n,char c); //添加 n 个 c

- String 转 数字
/* 字符串转带符号整数 */
   
int stoi(const string& str,size_t* idx=0,int base=10);
long stol(const string& str,size_t* idx=0,int base=10);
long long stoll(const string& str,size_t* idx=0,int base=10);
unsigned long stoul();  // 以下参数同上
unsigned long stoull();
float stof();
double stod();
long double stold();
/* 
* idx 返回字符串中第一个非数字的位置,即数值的部分的结束位置
* base 为进制
* 保留符号 & 去前导零
*/
    
/* 字符数组转数字 */    
int atoi(const char* s);
long atol(const char* s);
long long atoll(const char* s);
double atof(const char* s);  // float返回double
- 数字 转 String
// 带符号整形转成字符串
string to_string(int val);

string to_string(long val);

string to_string(longlong val);

// 无符号
string to_string(unsigned int val);

//浮点
string to_string(float val);
- 赋值
/* 重载‘=’运算符 */
string& operator=(const char* s); // C-style 赋值
string& operator=(const string& str); // 同类赋值
string& operator=(const char c); 


/* 函数调用形式 */
string& assign(const char* s);
string& assign(const char* s,int n); //前 n 个赋值
string& assign(const string& str);
string& assign(int n,char c); //赋值 n个 c
string& assign(const string& str,int start,int n);//str中start其后的n个赋值 
- 插入
string& insert(int pos,const char*s);     // 从 pos 开始插入
string& insert(int pos,const string& str); 
string& insert(int pos,int n,char c);     // 从 pos 开始插入 n 个
- 替换
string& replace(int pos,int n,const string& str); // 替换从POS开始的n个
string& replace(int pos,int n,const char* s);
- 比较
/*
* compare 函数依据字典序比较 
* 当前字符串 比 给定字符串 小   返回 -1
* 当前字符串 比 给定字符串 相等 返回 0
* 当前字符串 比 给定字符串 大   返回 1
*/

int compare(const string& s)const; 
int compare(const char* s)const;

/* 重载比较操作运算符 */
bool operator<(const string& str)const;
bool operator<(const char* str)const;
bool operator>(const string& str)const;
bool operator>(const char* str)const;
bool operator<=(const string& str)const;
bool operator<=(const char* str)const;
bool operator>=(const string& str)const;
bool operator>=(const char* str)const;
bool operator==(const string& str)const;
bool operator==(const char* str)const;
bool operator!=(const string& str)const;
bool operator!=(const char* str)const;

posted @ 2022-08-30 20:52  捏鼠  阅读(279)  评论(0)    收藏  举报