string 容器
- string 容器
- String和c风格字符串对比:
- string赋值操作
- string存取字符操作
- string拼接操作
string 容器
string容器头文件include"string"
String和c风格字符串对比:
- Char* 是一个指针,String是一个类
string封装了char*,管理这个字符串,是一个char*型的容器。 - String封装了很多实用的成员方法
查找find,拷贝copy,删除delete 替换replace,插入insert - 不用考虑内存释放和越界
string管理char*所分配的内存。每一次string的复制,取值都由string类负责维护,不用担心复制越界和取值越界等。
string赋值操作
#include"string"
#include"bits/stdc++.h"
using namespace std;
//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赋给当前字符串
//string& assign(const string &s, int start, int n);//将s从start开始n个字符赋值给字符串
void fz(){
string st1;
st1="hello world!";
cout<<"st1="<<st1<<endl;
string st2;
st2=st1;
cout<<"st2="<<st2<<endl;
string st3;
st3='b';
cout<<"st3="<<st3<<endl;
string st4;
st4.assign("hello C++");
cout<<"st4="<<st4<<endl;
string st5;
st5.assign("hello C++",3);
cout<<"st5="<<st5<<endl;
string st6;
st6.assign(st5);
cout<<"st6="<<st6<<endl;
string st7;
st7.assign(3,'f');
cout<<"st7="<<st7<<endl;
}
using namespace std;
int main(){
fz();
return 0;
}
运行结果:
string存取字符操作
#include"bits/stdc++.h"
using namespace std;
//存取字符操作
//char& operator[](int n);//通过[]方式取字符
//char& at(int n);//通过at方法获取字符
void fz(){
string st1="hello c++";
//1.通过[]访问单个字符
for(int i=0;i<st1.size();i++){
cout<<st1[i]<<" ";
}
cout<<endl;
//2.通过at方式访问单个字符
for(int i=0;i<st1.size();i++){
cout<<st1.at(i)<<" ";
}
cout<<endl;
}
using namespace std;
int main(){
fz();
return 0;
}
运行结果:
string拼接操作
#include"bits/stdc++.h"
using namespace std;
//string& operator+=(const string& str);//重载+=操作符
//string& operator+=(const char* str);//重载+=操作符
//string& operator+=(const char c);//重载+=操作符
//string& append(const char *s);//把字符串s连接到当前字符串结尾
//string& append(const char *s, int n);//把字符串s的前n个字符连接到当前字符串结尾
//string& append(const string &s);//同operator+=()
//string& append(const string &s, int pos, int n);//把字符串s中从pos开始的n个字符连接到当前字符串结尾
//string& append(int n, char c);//在当前字符串结尾添加n个字符c
void pj(){
//1.string& operator+=(const string& str);//重载+=操作符
string str1="hello ";
const char *str2="world";
str1+=str2;
cout<<str1<<endl;
//2.string& operator+=(const char* str);//重载+=操作符
string str3("HeELLO");
const char *B="EORLD";
str3+=B;
cout<<str3<<endl;
//3.string& operator+=(const char c);//重载+=操作符
string str("hello a");
char c='!';
str+=c;
cout<<str<<endl;
//4.string& append(const char *s);//把字符串s连接到当前字符串结尾
string str4="ok";
const char *d="OK";
str4.append(d);
cout<<str4<<endl;
//5.string& append(const string &s);//同operator+=()
//6.string& append(const string &s, int pos, int n);//把字符串s中从pos开始的n个字符连接到当前字符串结尾
string str6("My name is ");
string temp("Joe!");
//注意,string类中首元素下标也为0
//该函数中第三个参数应该是希望截取的字符串末尾下标+1,不是末尾下标本身
//就是说这个函数会截取第三个参数之前到第二个参数之间的字符串
//不包含第三个参数所指向下标的字符
str6.append(temp, 0, 4);//为了接上最后的感叹号字符,第三个参数是4而不是3
cout << str6 << endl;
//system("pause");
//7.string& append(int n, char c);//在当前字符串结尾添加n个字符c
string str7="My name is ";
char g='!';
str7.append(5,'!');
cout << str7 << endl;
}
using namespace std;
int main(){
pj();
return 0;
}
运行结果: