C++之STL -- string
1.string和char *的区别
(1)string是一个类,char *是一个指向字符的指针。
(2)string不用考虑内存释放和越界。
(3)string提供了一系列字符串操作函数:find,copy,erase,replace,insert等。
2.string的构造函数及遍历
-
#include <iostream> -
#include <string> -
using namespace std; -
int main() -
{ -
/* 字符串的四种构造方法 */ -
string s1 = "hello"; -
string s2("haha"); -
string s3 = s2; -
string s4(5,'a'); -
cout << s4 << endl; //aaaaa -
/* 字符串遍历的方法 */ -
//1.数组方式 -
for(int i=0;i<s1.length();i++) -
{ -
cout << s1[i] << " "; -
} -
cout << endl; -
//2.迭代器 -
for(string::iterator it = s1.begin();it!=s1.end();it++) -
{ -
cout << *it << " "; -
} -
cout << endl; -
return 0; -
}
3.string类存取字符的操作
-
#include <iostream> -
#include <string> -
using namespace std; -
int main() -
{ -
string s1 = "hello"; -
for(int i=0;i<s1.length();i++) -
{ -
cout << s1.at(i) << " "; //抛出异常 -
} -
return 0; -
}
4.字符指针和string的对换
5.连接字符串
-
#include <iostream> -
#include <string> -
using namespace std; -
int main() -
{ -
string s1 = "hello"; -
string s2 = "world"; -
s1 = s1 + s2; -
cout << s1 << endl; -
string s3 = "hello"; -
string s4 = "c++"; -
s3.append(s4); -
cout << s3 << endl; -
return 0; -
}
6.字符串查找和替换(重点)6.字符串查找和替换(重点)
API如下:
-
#include <iostream> -
#include <string> -
using namespace std; -
int main() -
{ -
string s1 = "hello Java,hello C#,hello C++,hello Python"; -
//第一次出现hello的index -
int index = s1.find("hello",0); -
cout << index << endl; -
//求hello出现的次数以及每一次出现的数组下标 -
int offindex = s1.find("hello",0); -
while (offindex != string::npos) -
{ -
cout << offindex << endl; -
offindex = offindex+1; -
offindex = s1.find("hello",offindex); -
} -
return 0; -
}
7.string的典型操作:删除和插入
(1)删除操作:
-
#include <iostream> -
#include <algorithm> -
#include <string> -
using namespace std; -
int main() -
{ -
string s1 = "hello1 hello2 hellol"; -
string::iterator it = find(s1.begin(),s1.end(),'1'); -
if (it != s1.end()) -
{ -
s1.erase(it); -
} -
cout << s1 << endl; -
s1.erase(s1.begin(),s1.end()); //全部删除 -
cout << s1.length() << endl; -
return 0; -
}
(2)插入操作:
-
#include <iostream> -
#include <algorithm> -
#include <string> -
using namespace std; -
int main() -
{ -
string s1 = "aaa"; -
s1.insert(0,"hahaha"); //头部插入 -
s1.insert(s1.length(),"---"); //尾部插入 -
cout << s1 << endl; -
return 0; -
}
8.大小写转换
-
#include <stdio.h> -
#include <string.h> //strlen -
#include <ctype.h> //toupper -
using namespace std; -
int main() -
{ -
int i; -
char s[] = "HELLO WORLD"; -
for(i=0;i<strlen(s);i++) -
{ -
s[i] = tolower(s[i]); -
} -
printf("%s\n",s); -
return 0; -
}