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 << " ";
}
}
}