字符串基础与头文件


字符串基础知识:

c风格的字符串

	char 字符 = 'a';//单个字符,必须用单引号
	char 变量名[] = "字符串值";//字符数组 组成的字符串,用双引号

c++风格的字符串

#include <string>
using namespace std;

string str = "字符串值";

c++string类各种操作的原形

	/*
	赋值的函数原型
	string& opreator = (const char* s);				//char* 类型字符串 赋值给当前的字符串
	string& opreator = (const string &s);			//把字符串s赋给当前的字符串
	string& opreator = (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个字符 赋值给当前的字符串

	寻找文本函数原形:
	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)			//从pos位置开始,查找s的前n个字符首次出现的位置
	int find(const char c,int pos)					//查找 char c首次出现的位置  从pos开始
	倒找文本函数原形:
	int rfind(const string& s,int pos=npos)const	//查找s最后的出现位置
	int rfind(const char* s,int pos=npos)const		//查找s最后的出现位置
	int rfind(const char* s,int pos=npos,int n)const//查找s的前n个字符最后出现位置,从pos开始
	int rfind(const char c,int pos)					//查找字符c最后的出现位置
	子文本替换函数原形
	string& replace(int pos,int n,const string& str)//替换从pos开始n个字符  替换为str
	string& replace(int pos,int n,const char* str)	//替换从pos开始n个字符  替换为str
	
	string插入和删除 原形
	string& insert(int pos,const char* s)			//插入字符串
	string& insert(int pos,const string& s)			//插入字符串
	string& insert(int pos,int n,char c)			//在指定位置插入n个字符c
	string& erase(int pos,int n=npos)				// 删除从pos开始的n个字符

	子串获取
	string substr(int pos,int n=npos)const; 返回pos开始的n个字符组成的字符串
	子串存取(单个字符)
	char& operator[] (int n)	重载了[] 可以直接当char数组来用
	char& at(int n)				//结果与 [] 一样
	*/



string的初始化与赋值语法

	//初始化
	string str1;
	string str2="bbbb"; 
	string str3("撒");	
	string str4(10, 'a');// 使用10个a来初始化
	//赋值操作
	string str5 = str2; //
	string str6;
	str6 = 'a';

	string str7;
	str7.assign("abcd");//  assign赋值方式  认识就行  一般情况可以直接用"="来代替

	string str8;
	str8.assign("abcdefg", 5);// 把字符串的前5个字符 赋值给当前字符串

	str8.assign(10, 'w'); //用n个字符 赋值当前的字符串

字符串拼接

	string str;
	str += "abc";  //    string& operator+=(const char* str)	重载+=操作符
	str += 'a';   //	 string& operator+=(const char c)		重载+=操作符
	str += str6;  //    string& operator+=(const string& str)	重载+=操作符
	str.append("abc");			//(const char *s)			// 把字符串连接到当前字符串后面
	str.append("abcdefg", 3);	//(const char *s,int n)		//把字符串s的前n个字符  连接到字符串后面
	str.append(str2);			//(const string &s)			//等同于 operator+=(const string& str)
	str.append(str8, 2, 3);		//(const string &s,int pos,int n)//字符串s中从post开始的n个字符 连接到字符串的结尾

寻找文本例子

	int pos=str.find(str6);
	pos = str.find("被查找的文本", 2);
	pos = str.find("abcdefg", 0, 2);		//从0开始 查找"ab"首次出现的位置
	pos = str.find('d', 2);					//查找字符'd'首次出现位置  从2开始

倒找文本例子

	pos = str.rfind(str2, 5);				//从位置5开始查找
	pos = str.rfind("被查找的文本", 5);
	pos = str.rfind("被查找的文本", 0, 2);	//查找文本 前两个字符 最后出现的位置, 从0开始
	pos = str.rfind('c',0);					//查找字符c最后的出现位置,从0开始

替换例子

	string newstr;
	newstr = str.replace(2, 1, str3);		// 从2开始  替换1个字符   替换为 str3
	newstr = str.replace(2, 1, "替换为");	 //从2开始  替换1个字符   替换为 "替换为"

字符串比较

	int 结果; //字符串比较是按照ASCII码比较,=返回0 >返回1 <返回-1
	结果=str.compare(str2);					//str 与 str2比较
	结果 = str.compare("要比较的字符串");	//str 与 常量字符串比较

字符存取 (单个字符)

	string str9 = "abcdefg";
	char s1=str9[1];						//原型:char& operator[] (int n)  重载了[] 可以直接当char数组来用
	char s2 = str9.at(5);					//结果与 [] 一样

取文本中间

	string str10 = "abcdefg";
	str10.substr(2, 3); //从2开始 返回3个字符的string字符串

插入和删除

	str.insert(3, "新插入的字符串");	//在3的位置插入字符串
	str.insert(3, str4);				//在3的位置插入字符串
	str.insert(3, 4, 'c');				//在3的位置插入4个c
	str.erase(3, 5);					//从3的位置开始,删除5个字符