string容器
string容器
本质:
·string是C++风格的字符串,而string本质上是一个类
string和char*的区别:
·char*是一个指针
·string是一个类,类内 不封装了char*,管理这个字符串,是一个char*型的容器。
特点:
string类内部封装了很多成员方法
例如:查找find,拷贝copy,删除delete,替换replace, 插入insert
string 管理char* 所分配的内存,不用担心复制越界和取值越界等,由类内部进行负责
构造函数:
string(); //创建一个空的字符串,例如:string str;
string(const char* s); //使用字符串初始化
string(const string& str); //使用一个string对象初始化里另一个string对象
string(int n, char c); //使用n个字符c初始化
string赋值操作:
string & operator=(const char* s); //char*类型字符串 赋值给当前的字符串
string & operator=(const string &s); //把字符串s赋值给当前的字符串
string & operator=(char c); //把字符赋值给当前的字符串
string & assign(const char* s); //把字符串s赋值给当前的字符串
string & assign(const char* s, int n); //把字符串s的前n个字符赋值给当前的字符串
string & assign(const string &s); //把字符串s赋值给当前的字符串
string & assign(int n, char c); //用n个字符c赋值给当前的字符串
tring字符串拼接:
string & operator+=(const char* str); //重载+=操作符
string & operator+=(char c); //重载+=操作符
string & operator+=(const string & str); //重载+=操作符
string & append(const char* s); //把字符串s连接到当前字符串结尾
string & append(const char* s, int n); //把字符串s连接到当前字符串结尾
string & append(const string & s); //把字符串s连接到当前字符串结尾
string & append(const string & s, int pos, int n);//把字符串s中从pos开始的n个字符连接到当前字符串结尾
string查找和替换:
int find(const string & str, int pos = 0)const; //查找str第一次出现的位置,从pos开始查找
int find(const char* s, int pos = 0)const; //查找s第一次出现的位置,从pos开始查找
int find(const char* s, int pos, int n)const; //从pos查找s的前n个字符第一次位置
int find(const char c, int pos = 0)const; //查找字符c第一次出现的位置,从pos开始查找
int rfind(const string & str, int pos = npos)const; //查找str最后一次出现的位置,从pos开始查找
int rfind(const char* s, int pos = npos)const; //查找s最后一次出现的位置,从pos开始查找
int rfind(const char* s, int pos, int n)const; //从pos查找s的前n个字符最后一次位置
int rfind(const char c, int pos = 0)const; //查找字符c最后一次出现的位置,从pos开始查找
string & replace(int pos, int n, const string & str); //替换从pos开始n个字符为字符串str
string & replace(int pos, int n, const char* s); //替换从pos开始n个字符为字符串s
string字符串比较:
int compare(const string & s) const; //与字符串s比较,相等则返回 0
int compare(const char* s) const; //与字符串s比较,相等则返回 0
string字符存取:
char & operator[](int n); //通过[]方式获取字符
char & at(int n); //通过at方式获取字符
string插入和删除:
string & insert(int pos, const char*s); //在pos处插入字符串
string & insert(int pos, const string & str); //在pos处插入字符串
string & insert(int pos, int n ,char c); //在pos处插入n个c字符
string & erase(int pos, int n = npos); //删除pos开始的n个字符
string子串:
string substr(int pos = 0; int n = npos) const; //返回有pos开始的n个字符组成的字符串
#include <iostream>
using namespace std;
#include <string>
构造函数:
void test01()
{
string s1;
const char* str = "hello word";
string s2(str);
cout << "s2 = " << s2 << endl;
string s3(s2);
cout << "s3 = " << s3 << endl;
string s4(10, 'c');
cout << "s4 = " << s4 << endl;
}
string赋值操作:
void test02()
{
string str1;
str1 = "hello world";
cout << "str1 = " << str1 <<endl;
string str2;
str2 = str1;
cout << "str2 = " << str2 <<endl;
string str3;
str3 = 'a';
cout << "str3 = " << str3 <<endl;
string str4;
str4.assign("hello C++");
cout << "str4 = " << str4 <<endl;
string str5;
str5.assign("hello C++", 5);
cout << "str5 = " << str5 <<endl;
string str6;
str6.assign(str5);
cout << "str6 = " << str6 <<endl;
string str7;
str7.assign(10, 'h');
cout << "str7 = " << str7 <<endl;
}
string字符串拼接:
void test03()
{
string str1;
str1 += "hello world";
str1 += '!';
string str2 = " yes";
str1 += str2;
cout << "str1 = " << str1 <<endl;
str2.append(" you ");
str2.append("are aaaaaaa",4);
string str3 = " right ";
str2.append(str3);
str2.append(str3, 0, 2);
cout << "str2 = " << str2 <<endl;
}
string查找和替换:
void test04()
{
string str = "abcdefghghghijk";
str.replace(8, 2, "2333333");
cout << "str = " << str <<endl;
int pos = str.find("gh");
cout << "pos = " << pos <<endl;
int rpos = str.rfind("gh");
cout << "rpos = " << rpos <<endl;
}
string的比较,存取,插入,删除,子串
void test05()
{
string str = "abcdefghghghijk";
string str2 = "abcdefghghghijk";
if (str.compare(str2) == 0){
cout << "str与str2相等" << endl;
}else{
cout << "str与str2不相等" << endl;
}
str[2] = 'y';
str.at(0) = 'z';
cout << str << endl;
str.insert(2, "哈哈哈哈");
cout << str << endl;
str.erase(2,4);
cout << str << endl;
string mail = "[email protected]";
int pos = mail.find('@');
string name = mail.substr(0, pos);
cout << name << endl;
}
int main()
{
test01();
test02();
test03();
test04();
test05();
system("pause");
return 0;
}
*黑马程序员c++课程学习练习