网站开发工具可视化,外贸网站模板制作,宋家庄网站建设,wordpress如何使用一个的模板一、string基本概念
1、本质
string是C风格的字符串#xff0c;而string本质上是一个类
string和char * 区别#xff1a; char * 是一个指针 string是一个类#xff0c;类内部封装了char*#xff0c;管理这个字符串#xff0c;是一个char*型的容器。
2、特点
1、stri…一、string基本概念
1、本质
string是C风格的字符串而string本质上是一个类
string和char * 区别 char * 是一个指针 string是一个类类内部封装了char*管理这个字符串是一个char*型的容器。
2、特点
1、string 类内部封装了很多成员方法 例如查找find拷贝copy删除delete 替换replace插入insert 2、string管理char*所分配的内存不用担心复制越界和取值越界等由类内部进行负责
3、string构造函数
① string构造函数原型
string(); // 创建一个空的字符串 例如string str;
string(const char * s); // 使用字符串s初始化
string(const string str); // 使用一个string对象初始化另一个string对象
string(int n,char c); //使用n个字符c初始化② string的多种构造方式没有可比性灵活使用即可。
例子
#include iostream
using namespace std;
#includestring //string的构造函数/*
构造函数原型string(); //创建一个空的字符串 例如: string str;string(const char* s); //使用字符串s初始化string(const string str); //使用一个string对象初始化另一个string对象string(int n, char c); //使用n个字符c初始化
*/void stringtest01()
{string s1; //默认构造 就是空字符串const char *str lalalala;string s2(str); //使用字符串 s 初始化string s3(s2);string s4(5, a);cout s2 s2 endl;cout s3 s3 endl;cout s4 s4 endl;
}int main()
{stringtest01();system(pause);return 0;
}2.3 string赋值操作
① 给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赋给当前字符串③ string的赋值方式很多operator这种方式是比较常用的。
例子
void stringtest02()
{string s1 cgslbdfapofclaujbrank!;cout s1 s1 endl;string s2;s2 s1; //把字符串s赋给当前的字符串cout s2 s2 endl;string s3;s3 a; //字符赋值给当前的字符串cout s3 s3 endl;string s4;s4.assign(vvvvvvvv);cout s4 s4 endl;string s5;s5.assign(abcdefghijklmn, 5);cout s5 s5 endl;string s6;s6.assign(s5);cout s6 s6 endl;string s7;s7.assign(9, a);cout s7 s7 endl;
}
int main()
{stringtest02();system(pause);return 0;
}2.4 string字符串拼接— 实现在字符串末尾拼接字符串
① 实现在字符串末尾拼接字符串。
② 函数原型
字符串拼接函数原型string operator(const char* str); //重载操作符string operator(const char c); //重载操作符string operator(const string str); //重载操作符string append(const char *s); //把字符串s连接到当前字符串结尾string append(const char *s, int n); //把字符串s的前n个字符连接到当前字符串结尾string append(const string s); //同operator(const string str)string append(const string s, int pos, int n); //字符串s中从pos开始的n个字符连接到字符串结尾例子
void stringtest03()
{string s1 I;s1 abcd;cout s1 s1 endl;s1 :;cout s1 s1 endl;string s2 LKMN;s1 s2;cout s1 s1 endl;s1.append(qwer);cout s1 s1 endl;s1.append(ty:uiop, 3);cout s1 s1 endl;s1.append(s2);cout s1 s1 endl;s1.append(s2, 1, 3);// 从下标1位置开始 截取3个字符拼接到字符串末尾cout s1 s1 endl;
}
int main()
{stringtest03();system(pause);return 0;
}2.5 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第一次出现位置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最后一次出现位置string replace(int pos, int n, const string str); //替换从pos开始n个字符为字符串strstring replace(int pos, int n,const char* s); //替换从pos开始的n个字符为字符串s④ find查找是从左往右rfind从右往左。
⑤ find找到字符串后返回查找的第一个字符位置找不到返回-1。
⑥ replace在替换时要知道从哪个位置起多少个字符替换成什么样的字符串。
例子
void stringtest04()
{string s1 abcdefabcimnlkabcmnrsabcqrst;int pos (int)s1.find(bc);cout 找到字符串位置POS : pos endl;pos (int)s1.rfind(bc);cout 找到字符串位置POS : pos endl;s1.replace(1, 3, 1111); //从1号位置起后面4个字符替换为 1111 cout S1 s1 endl;
}
int main()
{stringtest04();system(pause);return 0;
}2.6 string字符串比较
① 功能描述字符串之间比较。
② 比较方式字符串比较是按字符的ASCII码进行对比。
比较方式字符串比较是按字符的ASCII码进行对比 返回 0 返回 1 返回 -1③ 函数原型 函数原型int compare(const string s) const; //与字符串s比较int compare(const char *s) const; //与字符串s比较例子
void stringtest05()
{string s1 abcdefg;string s2;s2.assign(s1);string s3 sddfghh;cout s1 : s1 endl;cout s2 : s2 endl;cout s3 : s3 endl;int ret s1.compare(s2);cout S1 S2 比较结果 ret endl;ret s1.compare(s3);cout S1 S3 比较结果 ret endl;
}2.7 string字符串存取
① string中单个字符存取方式有两种
string中单个字符存取方式有两种char operator[](int n); //通过[]方式取字符char at(int n); //通过at方法获取字符例子
void stringtest06()
{string s1 abcdefg;cout s1 s1 endl;for (int i 0; i s1.size(); i){cout s1[i] endl;}char c s1.at(3);//通过at方法获取字符cout 第3个字符为 c endl;//通过上述两种方式修改字符串值s1[0] x;cout s1 s1 endl;s1.at(3) x;cout s1 s1 endl;
} 2.8 string字符串插入和删除
① 功能描述对string字符串进行插入和删除字符操作。
② 函数原型
函数原型string insert(int pos, const char* s); //插入字符串string insert(int pos, const string str); //插入字符串string insert(int pos, int n, char c); //在指定位置插入n个字符cstring erase(int pos, int n npos); //删除从Pos开始的n个字符
*/
③ 插入和删除的起始下标都是从0开始。
例子
void stringtest07()
{string s1 abcdefg;cout s1 s1 endl;s1.insert(2, WWW);cout s1 s1 endl;s1.erase(2, 3);cout s1 s1 endl;
}2.9 string子串获取
① 功能描述从字符串中获取想要的子串。
② 函数原型
函数原型string substr(int pos 0, int n npos) const; //返回由pos开始的n个字符组成的字符串
*/
③ 灵活的运用求子串功能可以在实际开发中获取有效的信息。
例子
void stringtest08()
{string s1 abcdefg;cout s1 s1 endl;string s2 s1.substr(2, 3);cout s2 s2 endl;//截取邮箱名字string email dzl_emails163.com;int pos (int)email.find(); //找到 符号位置string UserName email.substr(0, pos); //从位置0到pos位置间就是邮箱名字可以使用子串返回cout UserName : UserName endl;
}