STL string容器

c++11新特性及迭代器的使用

void text06() {//c++11新特性
	string s1 = "asbudnk";
	for (auto c :s1) {
		cout << c << "  ";
	}
	cout << endl;
	cout << s1[1] << endl;
	for (int i = 0;i< s1.size(); i++) {
		cout << s1[i] << " ";
	}
	cout << endl;
	for (auto i = s1.begin(); i != s1.end(); i++) {
		cout << *i << "  ";
	}
	cout << endl;
}

迭代器是指针,输出时使用‘*’解引用。

string拷贝

void text07() {
	string s1 = "hello122";
	string s2(s1, 3);
	cout << s2 << endl;
	string s3(s1, 8);
	cout << s3 << endl;
	//string s4(s1, 9);报错
	//cout << s4 << endl;
	string s5(s1, 1, 6);
	cout << s5 << endl;
	string s6(s1, 3, 11);
	cout << s6 << endl;
	string s7(s1, 8, 11);
	cout << s7 << endl;
	//string s8(s1, 9, 2);报错
	//cout << s8 << endl;
}

string 拷贝(被拷贝,开始位置,结束位置)

开始拷贝位置超出被拷贝size 报错

截取字符串长度

void text08() {
	string s1 = "value";
	string s2 = s1.substr();
	cout << s2 << endl;
	string s3 = s1.substr(1);
	cout << s3 << endl;
	string s4 = s1.substr(5);
	cout << s4 << endl;
	//string s5=s1.substr(10);报错
	//cout << s5 << endl;
	string s6 = s1.substr(1, 3);
	cout << s6 << endl;
	string s7 = s1.substr(1, 12);
	cout << s7 << endl;
	string s8 = s1.substr(5, 2);
	cout <<s8 << endl;
	//string s9 = s1.substr(6, 2);
	//cout << s9 << endl;报错
}

起始下标不能超出字符串长度

插入

void text09() {
	string s1 = "value";
	s1.insert(s1.begin(), 's');
	cout << s1 << endl;
	s1.insert(s1.begin(), 3, 'a');
	cout << s1 << endl;
	s1.insert(s1.begin(), s1.begin(), s1.begin() + 2);
	cout << s1 << endl;
	s1.insert(s1.end(), { '1','2' });
	cout << s1 << endl;
}

删除

void text10() {
	string s1 = "valude";
	string s2 = "valude";
	string s3 = "valude";
	string s4 = "valude";
	string s5 = "valude";
	s1.erase();
	cout << s1 << endl;
	s2.erase(1, 2);
	cout << s2 << endl;
	s3.erase(s3.begin(), s3.begin() + 2);
	cout << s3 << endl;
	s4.erase(s4.begin());
	cout << s4 << endl;
}

结尾插入

void text11() {
	string s1 = "c++";
	s1.append("  program");
	cout << s1 << endl;
}

 替换

//替换
void text12() {
	string s = ("i very love china");
	const char* cp1 = "truly";
	const char* cp2 = "truly!!!";
	string str1 = "really";
	string str2 = "really";
	s.replace(2, 4, cp1);
	cout << s << endl;
	s.replace(2, 5, cp2, 5);
	cout << s << endl;
	s.replace(2, 5, str1);
	cout << s << endl;
	s.replace(2, 6, str2, 0, 6);
	cout << s << endl;
	s.replace(2, 6, 6, '*');
	cout << s << endl;

}

 判断标点

void tex13() {
	string s;
	getline(cin, s);
	for (auto c : s) {
		if (!ispunct(c)) {
			cout << c << " ";
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值