C++基础知识学习记录—string类
- 游戏开发
- 2025-08-30 12:42:02

string实际上是C++内置的一个类,内部对char *进行了封装,不用担心数组越界问题,string类中,除了上课讲解的函数外,还有很多函数可以使用,可以自行查阅文档。
构造函数原型:
string(); //创建一个空的字符串 例如: string str;
string(const char* s); //使用字符串s初始化
string(const string& str); //拷贝构造函数
string(int n, char c); //使用n个字符c初始化
string(char *str,int n);//保留前n个字符组成字符串
常用函数
str.size() //取字符串的长度
str.length() //同上取字字符串的长度
str.empty() //判断字符串是否为空
str1==str2 //判断字符串是否相等
字符串的追加
string& operator+=(const char* str); //重载+=操作符
string& operator+=(const char c); //重载+=操作符
string& operator+=(const string& str); //重载+=操作符
string& append(const char *s); //把字符串s连接到当前字符串结尾
string& append(const char *s, int n); //把字符串s的前n个字符连接到当前字符串结尾
string& append(const string &s); //同operator+=(const string& str)
string& append(const string &s, int pos, int n);//字符串s中从pos开始的n个字符连接到字符串结尾
取字符
char& operator[](int n); //通过[]方式取字符
char& at(int n); //通过at方法获取字符
插入
string& insert(int pos, const char* s); //插入字符串
string& insert(int pos, const string& str); //插入字符串
删除
string& erase(int pos, int n = npos); //删除从Pos开始的n个字符
string& substr(int pos = 0, int n = npos) const; //返回由pos开始的n个字符组成的字符串。注意接收!!
替换
string& replace(int pos, int n, const string& str); //替换从pos开始n个字符为字符串str
string& replace(int pos, int n,const char* s); //替换从pos开始的n个字符为字符串
#include<iostream> #include<string.h> using namespace std; int main(){ //复习之前讲的string函数 string str1 = "admin"; char str2[23]="9999"; cout << str1.at(0) <<endl; cout << str1[0] << endl; cout << "字符串长度0" << str1.size() << endl; cout << "字符串长度" <<str1.length() <<endl; //字符串的遍历 for(char c:str1){ cout << c << endl; } cout << "*****" << endl; for(int i=0;i<str1.size();i++){ cout << str1[i] << endl; } //string实际上是C++内置的一个类,内部对char *进行了封装,不用担数组越界问 //类里面有很多方法 string str3 = "welcome"; //隐式调用构造函数 cout << str3 << endl; string str4("hello");//显示调用构造函数 cout << str4 << endl; // 创建一个堆内存对象 string *str5 = new string("world"); cout << *str5 << endl; delete str5; string str6(str4);//调用拷贝构造函数 cout << str6 << endl; string str7(3,'a');//使用3个字符初始化字符串 cout <<str7 <<endl; string str8("ASDFFGGG",3);//保留3个字符组成字符串 cout << str8 << endl; cout << str8.empty() << endl; //判断字符串是否为空 cout << (str7 == str8) << endl;//判断字符串是否相等 //字符串的追加 string str9("qqqq"); string str10("mmmmm"); str9+=str10; cout << str9 << endl; str9+="hhhhhh"; cout << str9 << endl; //字符追加 str9+='u'; cout << str9 <<endl; char *str11 = "99999"; str9 += str11; cout << str9 <<endl; //字符串的拼接 string str12("aaaa"); str12.append(" ww"); cout << str12 <<endl; //将字符串的前n个字符拼接到目标字符串的结尾 //参数1 从哪个字符串 里选取字符进行拼接 //参数2 选取前几个字符 str12.append("werttyu",3); cout << str12 << endl; //将字符串的s中从某个字符开始的n个字符拼接到目标字符串的结尾 //参数1 从那个字符串里选取字符进行拼接 //参数2 从哪开始 //参数3 拼接几个字符 str12.append("mnbvc",1,3); cout << str12 << endl; //插入 //参数1 从哪开始插 //参数2 插入什么 string str13="asdf"; str13.insert(2,"nnn"); //在指定位置插入字符串 cout << str13 << endl;//asnnndf //删除(截取) //参数1 从哪开始删除(截取) //参数2 删除(截取)几个字符 string str14="asdfg"; cout << str14.erase(2,3) << endl;//"as" string str15="nhytgbvfr"; cout << str15.substr(2,4) << endl;//"ytgb" //替换 //参数1 从哪开始替换 //参数2 替换几个字符 //参数3 替换为什么 string str16="mnbvc"; cout << str16.replace(0,3,"kkk") << endl; //"kkkvc" return 0; }通过string复习运算符重载
#include <iostream> #include <cstring> using namespace std; class String{ private: string str; public: String(const string &s); //构造函数 //友元运算符重载 friend String operator +(const String &s1,const String &s2); friend bool operator >(const String &s1,const String &s2); friend bool operator <(const String &s1,const String &s2); friend bool operator ==(const String &s1,const String &s2); //成员函数运算符 bool operator !=(const String &other); //赋值运算符 String& operator =(const String &s); // 类型转换 operator string(); //String转string //成员函数 string get_str() const; }; //构造函数 String::String(const string &s) { str = s; } //类型转换 String::operator string() { return str; } //访问属性str string String::get_str() const { return str; } ///字符串赋值 String& String::operator =(const String &s) { str=s.str; return *this; } //字符串长度判等 bool String::operator !=(const String &other) { return str.size() != other.str.size(); } //字符串拼接 String operator +(const String &s1,const String &s2) { return s1.str+s2.str; } //字符串长度 > bool operator >(const String &s1,const String &s2) { return s1.str.size()>s2.str.size(); } //字符串长度 < bool operator <(const String &s1,const String &s2) { return s1.str.size()<s2.str.size(); } //字符串长度 == bool operator ==(const String &s1,const String &s2) { return s1.str.size()==s2.str.size(); } int main() { String s1("qwe"); String s2("qwe"); String s3("QWE"); String s4("1234"); String s5("12"); String s6("5678"); String s7("34"); if(s1>s2) cout<<"正确"<<endl; else cout<<"错误"<<endl; if(s1>s3) cout<<"正确"<<endl; else cout<<"错误"<<endl; if(s1>s4) cout<<"正确"<<endl; else cout<<"错误"<<endl; cout<<(s2+s3).get_str()<<endl; s2=s3; cout<<s2.get_str()<<" "<<s3.get_str(); return 0; }C++基础知识学习记录—string类由讯客互联游戏开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“C++基础知识学习记录—string类”