做网站与运营大概多少钱,网络营销的本质,百度推广400电话,个人简介网站怎么做前言 大家在学习STL库的时候一定要学会看英文文档#xff0c;俗话说熟能生巧#xff0c;所以还得多练#xff01; 在使用string类之前#xff0c;要包含头文件#include string和using namespace std; 文档链接#xff1a;string - C Reference
一、string——构造…前言 大家在学习STL库的时候一定要学会看英文文档俗话说熟能生巧所以还得多练 在使用string类之前要包含头文件#include string和using namespace std; 文档链接string - C Reference
一、string——构造相关操作 1. string(); 常用 构造一个空字符串 string s1; 2. string(const char *s); 常用 使用字符串构造一个实例化对象 string s2(hello world); 3. string(const string str); 常用 使用string的实例化对象去拷贝构造另外一个实例化对象 string s2(hello world);
string s3(s2); 4. string operator(const string str); 常用
string s2(hello world);
string s4 s2; 5. string operator(const char *s); 常用 string s5 hello world; 6. string operator(char c); 这里有一点需要注意赋值运算符重载和拷贝构造的区别两个对象都是定义之后的是赋值运算符重载如果是在定义的时候的属于拷贝构造 所以代码1是不正确的因为这是拷贝构造而在拷贝构造这里没有将一个字符拷贝给string类的函数实现 正确的写法 string s6;s6 x; 7. string (const string str, size_t pos, size_t len npos); 拷贝str在pos的下标开始拷贝len个长度。 string s7 hello world;
string s8(s7, 0, 3); 8. string (const char* s, size_t n); 从s上拷贝前n个字符 string s9(hello world, 4);9. string (size_t n, char c); 拷贝n个一样的字符 string s10(10, x);10. string (InputIterator first, InputIterator last); 用迭代器拷贝first为头last为尾拷贝first string last也就是拷贝从first位置开始在last前一个位置停下来不拷贝last位置默认迭代器的end是在\0位置 string s11 hello world;string s12(s11.begin(), s11.end()-1); 二、string——打印相关操作 1. 输入字符串cin 可以从键盘上输入字符串但是遇到空格就结束输入 string s1;cin s1;cout s1 endl; 2. 输出字符串cout 将字符串的内容打印到显示器上 3. 获取字符串getline 从流中获取字符串输入空格不会停止 string s1;getline(cin, s1);cout s1 endl; 三、string——访问和遍历相关操作 1. char operator[] (size_t pos); 通过下标访问字符串元素 string s1 hello world;cout s1[0] endl; 2. char at (size_t pos); 跟下标访问一样只是报错的方式不同 string s1 hello world;cout 字符串第5个字符为 s1.at(4) endl; 3. iterator begin();和 iterator end(); begin获取字符串第一个字符的迭代器可以理解取第一个字符的地址 end获取最后一个字符的下一个位置的迭代器可以理解取最后一个有效字符下一个位置的地址 string s1 hello world;string::iterator begin s1.begin(); string::iterator end s1.end(); 可以像指针那样的遍历 string s1 hello world;string::iterator begin s1.begin();string::iterator end s1.end();while(begin end){cout *begin ;begin;}cout endl; 也可以访问第几个位置的元素但是一般用下标访问了 string s1 hello world;string::iterator begin s1.begin();string::iterator end s1.end();cout 访问第1个元素为 *begin endl;cout 访问第5个元素为 *(begin 4) endl;cout 访问倒数第3个元素为 *(end - 3) endl; 4. reverse_iterator rbegin();和 reverse_iterator rend(); rbegin指向的是最后一个有效字符的迭代器从后往前访问 rend指向的是第一个字符之前的迭代器从前往后访问 string s1 hello world;string::reverse_iterator rb s1.rbegin();string::reverse_iterator re s1.rend();while(rb re){cout *rb ;rb;} 5. 范围for遍历 很简洁但是底层依旧是迭代器 string s1 hello world;for(auto e : s1){cout e ;}cout endl; 四、string——容量相关操作 1. size 计算字符串的长度以字节为单位 string s1 hello world;
int len s1.size();
cout len endl; 2. capacity 返回当前为字符串已经分配的空间大小以字节为单位这个空间表示出来的是给有效字符存的空间但是实际上会比表示的空间多出来一个用来存\0 分配的空间会大于字符串的size但是分配的空间有可能不同这取决于不同的编译器 string s1 hello world;
cout s1.capacity() endl; 3. empty 判断字符串是否为空串为空返回true非0不为空返回false0 string s1 hello world;cout s1.empty() endl;string s2;cout s2.empty() endl; 4. clear 只清空字符串的有效内容不销毁空间清空内容之后size为0capacity不变 string s3 hello world;cout 清空之前的容量 s3.capacity() endl;cout 清空之前的长度 s3.size() endl;s3.clear();cout 清空之后的容量 s3.capacity() endl;cout 清空之后的长度 s3.size() endl; 5. reserve 为字符串保留空间 规则 1. 扩容当保留的空间 capacity认为扩容。每个编译器扩容的空间是不同的总体上看就是实际扩容下的空间≥要保留的空间 2. 缩容当保留的空间 capacity 认为缩容。有的编译器不会缩容有的编译器会缩容如果保留的空间size只缩容到size大小。 string s4 hello world;cout 扩容之前的容量 s4.capacity() endl;s4.reserve(100);cout 扩容之后的容量 s4.capacity() endl; string s4 hello world;cout 缩容之前的容量 s4.capacity() endl;s4.reserve(2);cout 缩容之后的容量 s4.capacity() endl; 6. resize
void resize (size_t n);
void resize (size_t n, char c); 将有效字符的个数该成n个 n capacity size n capacity ≥ n若提供c则后面全为c字符若没提供则为‘\0’ 并不是\0就是无效字符对于有效字符的设定是根据在0size-1之间的都是有效字符 string s5 hello world;cout s5 endl;cout 调整有效字符之前的容量 s5.capacity() endl;cout 调整有效字符之前的长度 s5.size() endl;s5.resize(30);cout s5 endl;cout 调整有效字符之后的容量 s5.capacity() endl;cout 调整有效字符之后的长度 s5.size() endl; string s5 hello world;cout s5 endl;cout 调整有效字符之前的容量 s5.capacity() endl;cout 调整有效字符之前的长度 s5.size() endl;s5.resize(30, x);cout s5 endl;cout 调整有效字符之后的容量 s5.capacity() endl;cout 调整有效字符之后的长度 s5.size() endl; size n capacity size ncapacity不变若提供c则后面全为c字符若没提供则为‘\0’ n size size n 删数据保留前n个有效字符capacity不变 五、string——增加操作未完结 1. string operator (char c); 尾插字符 string s1 hello world;cout s1 endl;s1 x;cout s1 endl; 2. string operator (const string str); 尾插字符串 string s1 hello world;cout s1 endl;s1 s1;cout s1 endl; 3. string operator (const char* s); 尾插字符串 string s1 hello world;cout s1 endl;s1 hello CSDN;cout s1 endl; 六、string——删除操作待更新 七、string——查找操作待更新 八、string——改数据操作待更新