#include<iostream>
#include<string>
using namespace std;
//string初始化
void main() {
string s1 = "huangxiaoguo";
string s2("hahahahha");
string s3 = s1 + s2;
cout << s3 << endl;
//转c字符串
const char* c_str = s3.c_str();
cout << c_str << endl;
getchar();
}
/*******************************************************************/
//string遍历
void main() {
string s1 = "huangxiaoguo";
//1. 数组方式
size_t i= 0;
for (; i < s1.length(); i++){
cout << s1[i] << endl;
}
//2.迭代器指针
for (string::iterator it = s1.begin(); it != s1.end(); it++) {
cout << *it << " ";
}
cout << endl;
//3. at函数(charAt),可能会出现异常
try{
i = 0;
for (; i < s1.length()+5; i++){
cout << s1.at(i) << " ";
}
}catch (...){
cout <<"出现异常"<< endl;
}
getchar();
}
/*******************************************************************/
//string字符串->c字符串转换
void main()
{
//string -> char*
string s1 = "huangxiaoguo";
const char* c = s1.c_str();
printf("%s\n", c);
//
string s2 = c;
//string->char[]
//从string中赋值字符到char[]
char arr[50] = { 0 };
s1.copy(arr, 4, 0);
cout << arr << endl;
system("pause");
}
/*******************************************************************/
//字符串拼接
void main() {
string s1 = "huang";
string s2 = "xiaoguo";
string s3 = s1 + s2;
cout << s3 << endl;
string s4 = "love";
s3.append(s4);
cout << s3 << endl;
getchar();
}
/*******************************************************************/
//字符串查找
void main()
{
string s1 = "to love and to be love";
//从0开始查找"love"的位置
int idx = s1.find("love", 0);
cout << idx << endl;//3
//统计love出现的次数
int idx_app = s1.find("love", 0);
//npos大于任何有效下标的值
int num = 0;
while (idx_app != string::npos)
{
num++;
cout << "找到的索引:" << idx_app << endl;//3和18
idx_app += 4;
idx_app = s1.find("love", idx_app);
}
cout << num << endl;//2
getchar();
}
/*******************************************************************/
//字符串替换
void main()
{
string s1 = "huang to love and to be love";
//0-5(不包含5)替换为xiao
s1.replace(0, 5, "xiao");
cout << s1 << endl;//xiao to love and to be love
//所有love替换为loved
string old_str = "love";
int idx = s1.find(old_str, 0);
while (idx != string::npos)
{
s1.replace(idx, old_str.length(), "loved");
idx += old_str.length();
idx = s1.find(old_str, idx);
}
cout << s1 << endl;//xiao to loved and to be loved
getchar();
}
/*******************************************************************/
//删除(截取)
void main()
{
string s1 = "to love and to be love";
//删除o,找到o所在的指针
string::iterator it = find(s1.begin(), s1.end(), 'o');
//只能删除一个字符,删除第一个o
s1.erase(it);
cout << s1 << endl;//t love and to be love
getchar();
}
/*******************************************************************/
//全部删除(截取)
void main(){
string s1 = "to love and to be love";
string str_old = "o";
int idx = s1.find(str_old, 0);
while (idx != string::npos){
s1.replace(idx, str_old.length(), "");
idx += str_old.length();
idx = s1.find(str_old, idx);
}
cout << s1 << endl;
getchar();
}
/*******************************************************************/
//插入
void main(){
string s1 = "to love and to be love";
//开头末尾插入字符串
s1.insert(0, "huang ");
s1.insert(s1.length(), " jidan");
cout << s1 << endl;
getchar();
}
/*******************************************************************/
#include <algorithm> //算法
//java StringBuffer才可变
//String 不可变
//大小写转换
void main(){
string s1 = "HUANG";
//原始字符串的起始地址,原始字符串的结束地址, 目标字符串的起始地址,函数名称
transform(s1.begin(), s1.end(), s1.begin(), tolower);
cout << s1 << endl;
transform(s1.begin(), s1.end(), s1.begin(), toupper);
cout << s1 << endl;
getchar();
}
/*******************************************************************/
//容器(集合)
//Vector
//初始化
#include <vector>
void printVector(vector<int> &v){
//通过数组的方式遍历
size_t i = 0;
for (; i < v.size(); i++){
cout << v[i] << endl;
}
}
void main()
{
//1.
vector<int> v1;
v1.push_back(20);
v1.push_back(40);
v1.push_back(15);
v1.push_back(7);
//2.
vector<int> v2 = v1;
printVector(v2);//20,40,15,7
//3.部分复制
vector<int> v3(v1.begin(), v1.begin() + 2);
printVector(v3);//20,40
getchar();
}
/*******************************************************************/
//集合的添加与删除
void printVector(vector<int> &v) {
//通过数组的方式遍历
size_t i = 0;
for (; i < v.size(); i++) {
cout << v[i] << endl;
}
}
void main(){
//添加到结尾
vector<int> v1;
v1.push_back(20);
v1.push_back(40);
v1.push_back(15);
v1.push_back(7);
//访问头部
v1.front() = 11;
//访问尾部
v1.back() = 90;
printVector(v1);
//删除结尾的元素
//v1.pop_back();
while (v1.size() > 1)
{
cout << "末尾的元素:" << v1.back() << endl;
v1.pop_back();
}
printVector(v1);
getchar();
}
/*******************************************************************/
//数组的方式
void printVector(vector<int> &v) {
//通过数组的方式遍历
size_t i = 0;
for (; i < v.size(); i++) {
cout << v[i] << endl;
}
}
void main()
{
vector<int> v1;
v1.push_back(20);
v1.push_back(40);
v1.push_back(15);
v1.push_back(7);
v1[2] = v1[2] + 10;
printVector(v1);//20,40,25,7
//容器等价于动态数组
vector<int> v2(10);
size_t i = 0;
for (; i < v2.size(); i++){
v2[i] = i + 1;
}
printVector(v2);
getchar();
}
/*******************************************************************/
//迭代器遍历
//迭代器的种类(正向,反向迭代器)
void main()
{
vector<int> v1;
v1.push_back(20);
v1.push_back(40);
v1.push_back(15);
v1.push_back(7);
//正向
for (vector<int>::iterator it = v1.begin(); it < v1.end(); it++){
cout << *it << endl;
}
cout << "-----------------" << endl;
//反向迭代
for (vector<int>::reverse_iterator it = v1.rbegin(); it < v1.rend(); it++){
cout << *it << endl;
}
getchar();
}
/*******************************************************************/
//删除
void printVector(vector<int> &v) {
//通过数组的方式遍历
size_t i = 0;
for (; i < v.size(); i++) {
cout << v[i] << endl;
}
cout << "----------------------------------" << endl;
}
void main()
{
vector<int> v1(10);
size_t i = 0;
for (; i < v1.size(); i++)
{
v1[i] = i + 1;
}
printVector(v1);
//删除指定位置
vector<int>::iterator it = v1.begin();
it += 3;
v1.erase(it);//删除4
printVector(v1);
//删除区间
v1.erase(v1.begin(), v1.begin() + 3);
//插入
v1.insert(v1.begin() + 2, 100);
v1.insert(v1.end() - 1, 200);
printVector(v1);
getchar();
}
C++(十一):string字符串&vector集合基本操作
最新推荐文章于 2024-02-24 14:50:12 发布