1.对象创建
//
// Created by 徐昌真 on 2024/12/15.
//
#include <iostream>
#include <string>using namespace std;int main() {string s = "意思是不要沉迷于空洞的幻想 也不要追求无用的虚名 强调了做事要脚踏实地 专注于实际的目标与行动";// 1. 无参构造string s1;cout << "s1: " << s1 << endl;// 2. 初始化列表string s2 = {'h','e'};cout << "s2: " << s2 << endl;// 3. 字符串初始化string s3_1 = "不驰于空想";string s3_2("不骛于虚声");cout << "s3_1: " << s3_1 << endl;cout << "s3_2: " << s3_2 << endl;// 4. 拷贝构造string s4(s);cout << "s4: " << s4 << endl;// 5. 前n'个字符string s5("我是久久", 5); //具体一个汉字占几个字符 和编码格式有关 字符前位是负数cout << "s5: " << s5 << endl;// a 个 bstring s6(10,'a'); //仅限字符cout << "s6: " << s6 << endl;return 0;
}
输出
2.插入
//
// Created by 徐昌真 on 2024/12/18.
//
#include <iostream>
#include <cstring>
#include <string>using namespace std;int main() {// 1. = +string s1 = "不驰于空想";s1 = s1 + " 不骛于虚声";cout << "s1: " << s1 << endl;// 2. +=string s2 = "不驰于空想";s2 += " 不骛于虚声";cout << "s2: " << s2 << endl;// 3. append// (1) 直接插入(尾部)string s3 = "hello";s3.append(" world");cout << "s3: " << s3 << endl;// (2) 插入字符的前n个s3.append(" new_one", 4);cout << "s3: " << s3 << endl;// (3) 从第n个位置开始去m个元素s3.append("666 888", 3, 4);cout << "s3: " << s3 << endl;// 4. push_backs3.push_back('!');cout << "s3: " << s3 << endl;return 0;
}
输出
3.随机访问
//
// Created by 徐昌真 on 2024/12/18.
//
#include <iostream>
#include <string>using namespace std;int main() {string s1 = "hello c--";cout << "s1: " << s1 << endl;// 元素访问cout << "s1[0]: " << s1[0] << endl;cout << "s1.at(0) " << s1.at(0) << endl;// 元素修改s1[s1.size() - 2] = '+';cout << "s1: " << s1 << endl;s1.at( s1.size() - 1 ) = '+';cout << "s1: " << s1 << endl;return 0;
}
4.插入操作
//
// Created by 徐昌真 on 2024/12/18.
//
#include <iostream>
#include <string>using namespace std;int main() {string s1 = "heo";cout << "s1: " << s1 << endl;// 1. 在n的位置插m个cs1.insert(2, 2, 'l' );cout << "s1: " << s1 << endl;// 2. 在n的位置插入字符串s1.insert(5, " world");cout << "s1: " << s1 << endl;// 3. 迭代器s1.insert(s1.end(), '!');cout << "s1: " << s1 << endl;return 0;
}
输出
5.删除操作
//
// Created by 徐昌真 on 2024/12/18.
//
#include <iostream>
#include <string>using namespace std;int main() {string s1 = "hello";cout << "s1: " << s1 << endl;//erase// 1. 全删s1.erase();cout << "s1: " << s1 << endl;cout << endl;s1 = "hello";cout << "s1: " << s1 << endl;// 2. 删除n后面的s1.erase(2);cout << "s1: " << s1 << endl;cout << endl;// 3. 删除n往后m个s1 = "hello";cout << "s1: " << s1 << endl;s1.erase(2, 2);cout << "s1: " << s1 << endl;cout << endl;// iterator 删除迭代器位置的s1 = "hello";cout << "s1: " << s1 << endl;s1.erase(s1.begin() );cout << "s1: " << s1 << endl;cout << endl;// iterator 删除迭代器位置的s1 = "hello";cout << "s1: " << s1 << endl;s1.erase(s1.begin() + 2, s1.begin() + 4); //左闭右开cout << "s1: " << s1 << endl;cout << endl;return 0;
}
输出
6.元素查找
//
// Created by 徐昌真 on 2024/12/18.
//
#include <iostream>
#include <string>using namespace std;int main() {// 默认findstring s1 = "hello woooooorld";cout << "s1.find(\"oooo\"): " << s1.find("oooo") << endl; //返回所在位置// 从第n个位置开始findcout << "s1.find('o'): " << s1.find('o') << endl;cout << "s1.find('o', 6): " << s1.find('o', 6) << endl;// rfind 从右边开始找cout << "s1.rfind('o'): " << s1.rfind('o') << endl;return 0;
}
7.元素替换
//
// Created by 徐昌真 on 2024/12/18.
//
#include <iostream>
#include <string>using namespace std;int main() {string s1 = "hello java";;cout << "s1: " << s1 << endl;// replace// (1) 从n个位置开始选择n个元素替换掉s1.replace( 6, 4, "c++");cout << "s1: " << s1 << endl;// 和上面的一样 只不过换成了迭代器s1.replace( s1.begin() + 6, s1.begin() + 11, "python");cout << "s1: " << s1 << endl;// 把替换的东西取前n个s1.replace( s1.begin() + 6, s1.begin() + 13, "c+++++++++++++++", 3);cout << "s1: " << s1 << endl;return 0;
}
输出
8.元素比较
compare (-1, 0, 1);
越长的越大 同样长度的从第一个不同元素开始 比较ASCII码
> == <
9. 字符获取
//
// Created by 徐昌真 on 2024/12/18.
//
#include <iostream>
#include <string>using namespace std;int main() {// substrstring s1 = "hello world";cout << s1.substr(0, 5) << endl;// 案例 获取字符串前后的东西string s2 = "hello&world";cout << s2.substr( 0,s2.find('&')) << endl;cout << s2.substr(s2.find('&') + 1, s1.size() ) << endl;return 0;
}
输出