2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > C++字符串string容器(构造 赋值 拼接 查找 替换 比较 存取 插入 删除 子串)

C++字符串string容器(构造 赋值 拼接 查找 替换 比较 存取 插入 删除 子串)

时间:2022-08-10 04:46:53

相关推荐

C++字符串string容器(构造 赋值 拼接 查找 替换 比较 存取 插入 删除 子串)

一、字符串构造

// 字符串的构造void test01() {//默认构造string s1;//使用char*字符串构造const char *str = "hello world";string s2(str);cout << "s2=" << s2 << endl;//使用string对象初始化string s3(s2);cout << "s3=" << s3 << endl;//使用n个字符初始化string s4(10, 'a');cout << "s4=" << s4 << endl;};

二、字符串赋值

/*** 赋值操作* 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个字符赋给当前字符串*/void test02() {string str1;str1 = "hello world";cout << "str1 = " << str1 << endl;string str2;str2 = str1;cout << "str2 = " << str2 << endl;string str3;str3 = 'a';cout << "str3 = " << str3 << endl;string str4;str4.assign("hello C++");cout << "str4 = " << str4 << endl;string str5;str5.assign("hello C++", 5);cout << "str5 = " << str5 << endl;string str6;str6.assign(str5);cout << "str6 = " << str6 << endl;string str7;str7.assign(10, 'e');cout << "str7 = " << str7 << endl;};

三、字符串拼接

//string字符串拼接/***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个字符连接到字符串结尾*/void test03() {string str1 = "我";str1 += "爱玩游戏";cout << "str1 = " << str1 << endl;str1 += ":";cout << "str1 = " << str1 << endl;string str2 = "LOL DNF";str1 += str2;cout << "str1 = " << str1 << endl;string str3 = "I";str3.assign(" love ");cout << "str3 = " << str3 << endl;str3.append("game abcde", 5);cout << "str3 = " << str3 << endl;// str3.append(str2);str3.append(str2, 0, 3);cout << "str3 = " << str3 << endl;};

四、字符串查找

//字符串查找void test04() {string str = "abcdefgde";// 从左往右查int pos = str.find("de");cout << "pos = " << pos << endl;//从右往左查pos = str.rfind("de");cout << "rfind pos = " << pos << endl;};

五、字符串替换

//字符串替换void test05() {string str1 = "abcdefg";//从1位置起2个字符,替换为"1231231"str1.replace(1, 2, "1231231");// str1=a1231231defgcout << "str1=" << str1 << endl;};

六、字符串比较

//字符串比较// = 返回 0// > 返回 1//< 返回 -1void test06() {string str1 = "aello";string str2 = "hello";if (pare(str2) == 0) {cout << "str1等于str2" << endl;} else if (pare(str2) > 0) {cout << "str1大于str2" << endl;} else {cout << "str1小于str2" << endl;}};

七、字符串存取

//string 字符存取void test07() {string str = "hello";// cout << "str=" << str << endl;//1、通过[]访问单个字符for (int i = 0; i < str.size(); ++i) {cout << str[i] << " ";}cout << endl;//2、通过at方法访问单个字符for (int i = 0; i < str.size(); ++i) {cout << str.at(i) << " ";}cout << endl;//修改单个字符str[0] = 'x';str.at(1) = 'x';// xxllocout << "str=" << str << endl;}

八、字符串插入删除

/** string& insert(int pos, const char* s);//插入字符串string& insert(int pos, const string& str);//插入字符串string& insert(int pos, int n, char c);//在指定位置插入n个字符string& erase(int pos, int n = npos);//删除从Pos开始的n个字符*///字符串的插入和删除void test08() {string str = "hello";//插入str.insert(1, "111");// h111ellocout << str << endl;//hellostr.erase(1, 3);cout << str << endl;}

九、子串

//string子串void test09() {string str = "abcdef";string subStr = str.substr(1, 3);// subStr=bcdcout << "subStr=" << subStr << endl;string email = "zhangsan@";//从邮件地址中获取用户名信息int pos = email.find("@");cout<<pos<<endl;string userName = email.substr(0, pos);cout << userName << endl;}

十、测试

#include <iostream>#include <string>using namespace std;// 字符串的构造void test01() {//默认构造string s1;//使用char*字符串构造const char *str = "hello world";string s2(str);cout << "s2=" << s2 << endl;//使用string对象初始化string s3(s2);cout << "s3=" << s3 << endl;//使用n个字符初始化string s4(10, 'a');cout << "s4=" << s4 << endl;};/*** 赋值操作* 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个字符赋给当前字符串*/void test02() {string str1;str1 = "hello world";cout << "str1 = " << str1 << endl;string str2;str2 = str1;cout << "str2 = " << str2 << endl;string str3;str3 = 'a';cout << "str3 = " << str3 << endl;string str4;str4.assign("hello C++");cout << "str4 = " << str4 << endl;string str5;str5.assign("hello C++", 5);cout << "str5 = " << str5 << endl;string str6;str6.assign(str5);cout << "str6 = " << str6 << endl;string str7;str7.assign(10, 'e');cout << "str7 = " << str7 << endl;};//string字符串拼接/***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个字符连接到字符串结尾*/void test03() {string str1 = "我";str1 += "爱玩游戏";cout << "str1 = " << str1 << endl;str1 += ":";cout << "str1 = " << str1 << endl;string str2 = "LOL DNF";str1 += str2;cout << "str1 = " << str1 << endl;string str3 = "I";str3.assign(" love ");cout << "str3 = " << str3 << endl;str3.append("game abcde", 5);cout << "str3 = " << str3 << endl;// str3.append(str2);str3.append(str2, 0, 3);cout << "str3 = " << str3 << endl;};//字符串查找void test04() {string str = "abcdefgde";// 从左往右查int pos = str.find("de");cout << "pos = " << pos << endl;//从右往左查pos = str.rfind("de");cout << "rfind pos = " << pos << endl;};//字符串替换void test05() {string str1 = "abcdefg";//从1位置起2个字符,替换为"1231231"str1.replace(1, 2, "1231231");// str1=a1231231defgcout << "str1=" << str1 << endl;};//字符串比较// = 返回 0// > 返回 1//< 返回 -1void test06() {string str1 = "aello";string str2 = "hello";if (pare(str2) == 0) {cout << "str1等于str2" << endl;} else if (pare(str2) > 0) {cout << "str1大于str2" << endl;} else {cout << "str1小于str2" << endl;}};//string 字符存取void test07() {string str = "hello";// cout << "str=" << str << endl;//1、通过[]访问单个字符for (int i = 0; i < str.size(); ++i) {cout << str[i] << " ";}cout << endl;//2、通过at方法访问单个字符for (int i = 0; i < str.size(); ++i) {cout << str.at(i) << " ";}cout << endl;//修改单个字符str[0] = 'x';str.at(1) = 'x';// xxllocout << "str=" << str << endl;}/** string& insert(int pos, const char* s);//插入字符串string& insert(int pos, const string& str);//插入字符串string& insert(int pos, int n, char c);//在指定位置插入n个字符string& erase(int pos, int n = npos);//删除从Pos开始的n个字符*///字符串的插入和删除void test08() {string str = "hello";//插入str.insert(1, "111");// h111ellocout << str << endl;//hellostr.erase(1, 3);cout << str << endl;}//string子串void test09() {string str = "abcdef";string subStr = str.substr(1, 3);// subStr=bcdcout << "subStr=" << subStr << endl;string email = "zhangsan@";//从邮件地址中获取用户名信息int pos = email.find("@");cout<<pos<<endl;string userName = email.substr(0, pos);cout << userName << endl;}int main() {// test01();// test02();// test03();// test04();// test05();// test06();// test07();// test08();test09();system("pause");return 0;}

subStr=bcd8zhangsan

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。