C++提高编程 3 STL常用容器
2022/2/18 20:20:21
本文主要是介绍C++提高编程 3 STL常用容器,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
3.1 string容器
3.1.1 string基本概念
本质:string是C++风格的字符串,而string本质上是一个类
string和char*区别:
1、char*是一个指针
2、string是一个类,类内封装了char*,管理这个字符串,是一个char*型的容器。
特点:string类内封装了很多成员方法,如查找(find),拷贝(copy),删除(delete),替换(replace),插入(insert);string管理char*所分配的内存,不用担心复制越界和取值越界等,由类内部进行负责
3.1.2 string构造函数
构造函数原型:
string(); //创建一个空的字符串 例如:string str;
string(const char* s); //使用字符串s初始化
string(const string& str); //使用一个string对象初始化另一个string对象
string(int n,char c); //使用n个字符c初始化
#include<iostream> using namespace std; #include <string> //string构造函数 /* string(); //创建一个空的字符串 例如:string str; string(const char* s); //使用字符串s初始化 string(const string& str); //使用一个string对象初始化另一个string对象 string(int n,char c); //使用n个字符c初始化 */ void test1() { string s1; //默认构造 const char* str = "hello world"; string s2(str); cout << "s2 = " << s2 << endl; string s3(s2); cout << "s3 = " << s3 << endl; string s4(10, 'a'); cout << "s4 = " << s4 << endl; } int main() { test1(); system("pause"); return 0; }
3.1.3 string赋值操作
给string赋值,operator=用的比较多,比较实用
赋值的原函数:
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个字符c赋给当前字符串
#include<iostream> using namespace std; #include <string> //string赋值操作 /* 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个字符c赋给当前字符串 */ void test1() { 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(5, 'w'); cout << "str7 = " << str7 << endl; } int main() { test1(); system("pause"); return 0; }
3.1.4 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个字符连接到当前字符串结尾
#include<iostream> using namespace std; #include <string> //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 test1() { 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.append(" love "); cout << "str3 = " << str3 << endl; str3.append("game abcde", 5); //I love game cout << "str3 = " << str3 << endl; //str3.append(str2); //cout << "str3 = " << str3 << endl; //I love game LOL DNF //str3.append(str2, 0, 3); //cout << "str3 = " << str3 << endl; //I love game LOL str3.append(str2, 4, 3); //I love game DNF //参数1:要截取的字符串 参数2:从哪个位置开始截取 参数3:要截取的字符个数 cout << "str3 = " << str3 << endl; } int main() { test1(); system("pause"); return 0; }
这篇关于C++提高编程 3 STL常用容器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-05Easysearch 可搜索快照功能,看这篇就够了
- 2025-01-04BOT+EPC模式在基础设施项目中的应用与优势
- 2025-01-03用LangChain构建会检索和搜索的智能聊天机器人指南
- 2025-01-03图像文字理解,OCR、大模型还是多模态模型?PalliGema2在QLoRA技术上的微调与应用
- 2025-01-03混合搜索:用LanceDB实现语义和关键词结合的搜索技术(应用于实际项目)
- 2025-01-03停止思考数据管道,开始构建数据平台:介绍Analytics Engineering Framework
- 2025-01-03如果 Azure-Samples/aks-store-demo 使用了 Score 会怎样?
- 2025-01-03Apache Flink概述:实时数据处理的利器
- 2025-01-01使用 SVN合并操作时,怎么解决冲突的情况?-icode9专业技术文章分享
- 2025-01-01告别Anaconda?试试这些替代品吧