概述
目录
string的本质
与c相比
构造函数
赋值操作
拼接
查找和替换
比较
存取
插入和删除
子串截取
string的本质
string的本质为一个类 其内部维护了一个char* 指针
与c相比
最后没有/0标志
不能使用printf("%s",str);
可以printf("%s",str.data());string函数会自动变化内存大小
构造函数
函数原型:
string(); 如 string str;
string (const char*s); 如 初始化字符串
string(const string& str); 如用string初始化string
string(int n,char c);
#include <iostream> using namespace std; int main() { //一 string s1; //二 const char* s = "hello world"; string s2(s); string s3("hello world"); //三 string s4(s2); //四 string s5(3, 'a'); return 0; }
赋值操作
函数原型:
string& operator =(const char* s);
string& operator =(const strinng& s);
string& operator =(char c);
string& assign(const char* s , int n);// n可写可不写,写的话表示把字符串前n个字符赋给string
string& assign(const string& s);
string& assign(int n , char c);
#include <iostream> using namespace std; int main() { //一 string s1; s1 = "hello world"; //二 string s2 = s1; //三 string s3; s3 = 'a'; //四 string s4; s4.assign("hello C++"); string s5; s5.assign("hello C++", 5); //五 string s6; s6.assign(s4); //六 string s7; s7.assign(4, 'a'); cout << s7; return 0; }
拼接
函数原型:
string& operator+=(const char* str);
string& operator+=(const char c);
string& operator+=(const string& str);
string& append(const char* s);
string& append(const char* s , int n);
string& append(const string& s);
string& append(const string& s , int pos , int n);
//从pos位置下标开始的n个字符拼接到尾部
#include <iostream> using namespace std; int main() { //一 const char* a = "hello world"; string s1 = "hello C++ "; s1 += a; string s2 = "hello C++ "; s2 += "hello world"; //二 const char b = 'a'; string s3 = "hello C++ "; s3 += b; //三 string s1_ = "hello C++ "; string s4 = "hello world"; s1 += s4; //四 string s5 = "hello C++"; s5.append("hello world"); const char* c = "hello world"; string s5_ = "hello world"; s5_.append(c); //五 const char* d = "hello world"; string s6 = "hello C++ "; s6.append(d, 5); //六 string s7 = "hello C++"; string s7_ = "hello world"; s7.append(s7_); //七 string s8 = "hello C++"; string s8_ = "hello world"; s8.append(s8_, 0, 5); return 0; }
查找和替换
函数原型:
查找第一次出现位置
Int find(const string& str , int pos = 0) const;
//返回第一个字符下标,pos(下标)代表从哪开始(包括这个位置)
查找最后一次出现的位置Int
rfind(const string& str , int pos = 0) const;
替换
string& replace (int pos , int n , const string& str);
#include <iostream> using namespace std; int main() { //一 string s1 = "hello world world"; int ret = s1.find("world"); // ret=6 //二 ret = s1.rfind("world"); //ret=12; //三 string s2 = "hello C++"; s2.replace(6, 3, "world"); //s2="hello world"; return 0; }
比较
函数原型:
int compare (const string& s) const;
int compare(const char* s) const;也可以用比较运算符 返回类型为bool
比较方式:按照ASC码比较
若遇到不等字符 则停止比较
= 返回 0 //最大用途 判断二者是否相等
> 返回 1
< 返回 -1
#include <iostream> using namespace std; int main() { string s1 = "hello world"; string s2 = "hello worke"; string s3 = "hello world"; if (s1.compare(s3) == 0)//条件成立 { cout << "s1等于s3" << endl; } cout << s2.compare(s1);//结果为-1 说明s2大 //这里可以看出s2-s1 若s2大于s1则返回1 若二者相等则返回0 否则返回-1 return 0; }
字符串的存取
函数原型:
char& operator[] (int n);
char& at(int n);#include <iostream> using namespace std; int main() { string s1 = "hello world"; for (int i = 0; i < s1.size(); i++) { cout << s1[i] << endl; } for (int i = 0; i < s1.size(); i++) { cout << s1.at(i); } return 0; }
子串的截取
函数原型:
string substr(int pos = 0 , int n = npos) const;
从pos开始截取,截取npos个
最后
以上就是炙热咖啡为你收集整理的C++ string容器常用函数大全查找和替换比较子串的截取的全部内容,希望文章能够帮你解决C++ string容器常用函数大全查找和替换比较子串的截取所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复