title: string类的基本用法date: 2020-12-5 22:44:41
tags: C++
categories: 类库
#include <iostream>#include <stack>#include <vector>#include <string>using namespace std;void fun_at(){ //a.at(index) 访问(access)串指定位置的元素 string a = "012345"; a.at(0) = 'a'; cout << a << endl; //a12345 char t = a.at(1); cout << t << endl; //1 }void fun_find_erase_length(){ //a.length() 返回串的长度 //a.find(&str) 查找子串的位置 //a.erase(pos,len) 删除串元素 string m, n; m = n = "012345"; m.erase(m.length()-2, 1); n.erase(); cout << m << endl; //01235 cout << n << endl; //null //查找子串个数 string a = "abcdef ab cdabccd"; string b = "cd"; int sum = 0; while (1) { int pos; int len; pos = a.find(b); len = b.length(); if (pos == -1) break; else { sum++; a.erase(pos, len); } } cout << sum << endl; //3}void fun_append(){ //1.拼接两个串 basic_string &append( const basic_string &str ); string a1 = "012345"; string b1 = "ab"; a1.append(b1); cout << a1 << endl; //012345ab //2.末尾添加num个字符 ch basic_string &append( size_type num, char ch ); string a2 = "012345"; char b2 = 'a'; a2.append(4, b2); cout << a2 << endl; //012345aaaa //3.添加str的子串,子串以index索引开始,长度为len basic_string &append( const basic_string &str, size_type index, size_type len ); string a3 = "012345"; string b3 = "abcde"; a3.append(b3, 0, 3); cout << a3 << endl; //012345abc}void fun_replace(){ //str 为""包含的串 "串"其实返回的也是地址 string a1 = "012345"; a1.replace(0, 0, "abcd"); //len2默认为全长,此时为4 cout << a1 << endl; //abcd012345 //str 为 字符数组 string a2 = "012345"; char b2[10] = "abcd"; a2.replace(1, 1, b2,3); cout << a2 << endl; //0abc2345 //str 为 string类 函数原型多一个参数(index1,len1,str,index2,len2)index2默认为0,len2默认为str全长 string a3 = "012345", b3 = "abcd"; a3.replace(0, 0, b3); cout << a3 << endl; //abcd012345 a3 = "012345"; b3 = "abcd"; a3.replace(0, 0, b3, 1, 1); cout << a3 << endl; //b012345}void fun_a_c_str(){ //a.c_str() 返回串的首个元素的地址 string a = "012345"; const char* p = a.c_str(); cout << *p << endl; //0}void fun_push_back(){ string a = ""; char t = 'd'; a.push_back('c'); a.push_back(t); cout << a << endl; //cd}int main(){ //string 类的基本用法 //a.at(index) 访问串指定位置的元素,(index为下标,与字符数组统一) //a.length() 返回串的长度 //a.find(&str) 查找子串的位置(返回值为下标,查找失败返回 -1 ) //a.c_str() 返回串的首个元素的地址(返回值类型为const char *类型) //a.append() 1.拼接两个串 2.末尾添加num个字符ch 3.添加str的子串,子串以index索引开始,长度为len //a.erase(index) 删除串元素 //a.clear() 清空串 a = ""一样 //a.empty() 查看串是否空了 返回1说明空串,非空串返回0 //pop_back() 删除尾元素 //a.replace(index,len1,&str,len2) 剪切粘贴函数 先剪切再粘贴,粘贴可以比剪切长,自动位移 //a.begin() 正向的迭代器,返回一个指向串第一个元素的指针 >>1.访问第一个元素 *(a.begin()) >>2.访问第二个元素 *(a.begin()+1) //a.end() 正向的迭代器,返回一个指向串最后一个元素还要后一位的指针 >>1.访问最后一个元素 *(a.end()-1) >>2. 访问倒二个元素 *(a.end()-2) //a.rbegin() 反向迭代器,返回一个指向最后一个元素的指针 >>1.访问最后一个元素 *(a.rbegin()) >>2.访问倒二个元素 *(a.rbegin()+1) //a.rend() 反向迭代器,返回一个指向第一个元素还要前一位的指针 >>1.访问第一个元素 *(a.rend()-1) >>2.访问第二个元素 *(a.rbegin()-2) return 0;}