string是C++风格的字符串,其本质上是一个类,内部封装了很多成员函数。
string和char *的区别:
1.char *是一个指针;
2.string是一个类,内部封装 char*,是一个char*型的容器。
string构造函数:
函数原型:
// 创建一个空字符串 string(); // 使用字符串s初始化 string(const char* s); // 使用string对象初始化另一个string对象 string(const string& str); // 使用n个字符c初始化 string(int n,char c);
例子:
#include <iostream>
#include <string>
using namespace std;
void test01(){
string s1;
cout<<"s1="<<s1<<endl;
const char* str="hello";
string s2(str);
cout<<"s2="<<s2<<endl;
string s3(s2);
cout<<"s3="<<s3<<endl;
string s4(5,'k');
cout<<"s4="<<s4<<endl;
}
int main() {
test01();
return 0;
}
string赋值操作:
函数原型:
// char*类型字符串,赋值给当前字符串 string& operator=(const char* s); // 字符串s赋给当前字符串 string* operator=(const string &s); // 把字符c赋给当前字符串 string& operator=(char c); // char*类型字符串,赋值给当前字符串 string& assign(const char* s); // 把字符串s的前n个字符赋给当前字符串 string& assign(const char* s,int n); // 字符串s赋给当前字符串 string& assign(const string &s); // 把n个字符c赋给当前字符串 string& assign(int n,char c);
例子:
#include <iostream>
#include <string>
using namespace std;
void test01(){
string str1;
str1="hello";
cout<<"str1="<<str1<<endl;
string str2;
str2=str1;
cout<<"str2="<<str2<<endl;
string str3;
str3='n';
cout<<"str3="<<str3<<endl;
string s="hello world";
string str4;
str4.assign(s,5);
cout<<"str4="<<str4<<endl;
string str5;
str5.assign(6,'a');
cout<<"str5="<<str5<<endl;
}
int main() {
test01();
return 0;
}
string字符串拼接:
实现在字符串末尾拼接字符串。
函数原型:
string& operator+=(const char* str); string& operator+=(const char c); string& operator+=(const string& str); string& append(const char *s); //把字符串s的前n个字符连接到当前字符串结尾 string& append(const char *s, int n); string& append(const string &s); //字符串s中从pos开始的n个字符连接到字符串结尾 string& append(const string &s, int pos, int n);
例子:
#include <iostream>
#include <string>
using namespace std;
void test01(){
string str1="hello";
str1+=" world";
cout<<"str1="<<str1<<endl;
str1+="!";
cout<<"str1="<<str1<<endl;
string str2="my ";
str2+=str1;
cout<<"str2="<<str2<<endl;
string str3="i";
str3.append(str2,2,3);
cout<<"str3="<<str3<<endl;
}
int main() {
test01();
return 0;
}
字符串查找和替换:
查找时找到返回字符的位置,找不到返回-1。
函数原型:
//查找str第一次出现位置,从pos开始查找 int find(const string& str, int pos = 0) const; //查找s第一次出现位置,从pos开始查找 int find(const char* s, int pos = 0) const; //从pos位置查找s的前n个字符第一次位置 int find(const char* s, int pos, int n) const; //查找字符c第一次出现位置 int find(const char c, int pos = 0) const; //查找str最后一次位置,从pos开始查找 int rfind(const string& str, int pos = npos) const; //查找s最后一次出现位置,从pos开始查找 int rfind(const char* s, int pos = npos) const; //从pos查找s的前n个字符最后一次位置 int rfind(const char* s, int pos, int n) const; //查找字符c最后一次出现位置 int rfind(const char c, int pos = 0) const; //替换从pos开始n个字符为字符串str string& replace(int pos, int n, const string& str); //替换从pos开始的n个字符为字符串s string& replace(int pos, int n,const char* s);
string字符串比较:
比较方式:
按照字符的ASCII码进行对比
== 返回 0;
> 返回 1;
< 返回-1.
函数原型:
//与字符串s比较 int compare(const string &s) const; //与字符串s比较 int compare(const char *s) const;
字符串存取:
函数原型:
//通过[]方式取字符 char& operator[](int n); //通过at方法获取字符 char& at(int n);
string插入和删除:
起始下标从0开始。
函数原型:
string& insert(int pos, const char* s); string& insert(int pos, const string& str); //在指定位置插入n个字符c string& insert(int pos, int n, char c); //删除从Pos开始的n个字符 string& erase(int pos, int n = npos);
例子:
#include <iostream>
#include <string>
using namespace std;
void test01(){
string str1="hello";
str1.insert(1,"000");
cout<<"str1="<<str1<<endl;
str1.erase(1,3);
cout<<"str1="<<str1<<endl;
}
int main() {
test01();
return 0;
}
string子串:
函数原型:
//返回由pos开始的n个字符组成的字符串 string substr(int pos = 0, int n = npos) const;