STL容器用法总结——string

1、string类型的初始化:

      string s1;//s1为空串

      string s2("abc");//用字面值abc初始化s2

      string s3(s2);//将s3初始化为s2的一个副本

      string s4(n,‘c’);//将s4初始化为含有n个c的字符串

2、string类型的常用操作:

 (1)s.empty()            //若s为空串,则返回true,否则返回false(if(s.empty==0){..........})

 (2)s.size()               //获取字符串s中的字符个数

 (3)s[n]                     //返回s中位置为n的字符,位置从0开始,类似于数组

 (4)s1+s2                 //将s1和s2连接成一个新串

 (5)s1=s2                //将s1的内容替换为s2的副本

 (6)s1==s2             //判定相等,相等返回true,否则返回false

 (7)s1!=s2              //判定不相等,不等返回true,否则返回false

 (8)当需要输入含有空格的字符串时,可用getline函数,用法如下:

          string a;   getline(cin,a);

          注意:1.字符串用“+”连接时,被连接的部分必须有string变量存在,即string s="HELLO"+"WORLD";是错误的写法。

3、补充一:

string的特性描述:
int capacity()const;        //返回当前容量(即string中不必增加内存即可存放的元素个数)
int max_size()const;      //返回string对象中可存放的最大字符串的长度
int size()const;               //返回当前字符串的大小
int length()const;           //返回当前字符串的长度
bool empty()const;        //当前字符串是否为空
void resize(int len,char c);//把字符串当前大小置为len,并用字符c填充不足的部分

string的赋值:
string &operator=(const string &s);//把字符串s赋给当前字符串
 

string的连接:
string &operator+=(const string &s);//把字符串s连接到当前字符串的结尾 
string &append(const char *s);            //把c类型字符串s连接到当前字符串结尾

string的比较:
bool operator==(const string &s1,const string &s2)const;//比较两个字符串是否相等
运算符">","<",">=","<=","!="均被重载用于字符串的比较;
int compare(const string &s) const;//比较当前字符串和s的大小


string的子串:
string substr(int pos = 0,int n = npos) const;//返回pos开始的n个字符组成的字符串

string substr(int pos);//返回pos开始的字符组成的字符串

string的交换:
void swap(string &s2);    //交换当前字符串与s2的值


string类的查找函数: 

//查找成功时返回所在位置,失败返回string::npos的值,判断string::size_type pos==str.npos是否成立
int find(char c, int pos = 0) const;//从pos开始查找字符c在当前字符串的位置
int find(const char *s, int pos = 0) const;//从pos开始查找字符串s在当前串中的位置
int find(const char *s, int pos, int n) const;//从pos开始查找字符串s中前n个字符在当前串中的位置
int find(const string &s, int pos = 0) const;//从pos开始查找字符串s在当前串中的位置


字符串流处理: 

库定义了三种类:istringstream、ostringstream和stringstream,分别用来进行流的输入、输出和输入输出操作。

在进行多次转换的时候,必须调用stringstream的成员函数clear().

ss. bool eof()  :字符串流为空时返回 true

ss. clear() :清空字符串流

用途一:切割串信息,用到前面的eof,当然是切割到字符串流空就结束

//切割流
    stringstream ss;
	ss.clear();    //清空流
	string Str;
	getline(cin, Str);
	ss << Str;
	while (!ss.eof())
	{
		string Tempstr;
		ss >> Tempstr;
		cout << Tempstr << endl;
	}
	ss.clear();   //清空流

用途二:转换成任意类型,切割流并不是字符串单一流向,还可以转换成浮点型,整型等等

//类型互换
    string Fix_Data = "1998.9 + 26 = MyHeart";
	stringstream _ss(Fix_Data);
	double Birth;
	_ss >> Birth;
	cout << "Birth: "<> Signal;
	cout << "Signal: " << Signal<> Day;
	cout << "Day: " << Day << endl;
 
	_ss >> Signal;
	cout << "Signal: " << Signal << endl;
 
	char Sad[10];
	_ss >> Sad;
	cout << "Sad: " << Sad << endl;

 

#include 
#include
#include
using namespace std;
//只能处理如 12/45/48  12/45/48/类数据分割 
int main(){
	int n;
	cin>>n;
	while(n--){
		vectorres;
		string str;
		cin>>str;
		string::size_type pos,start=0;
		string pattern="/";
		pos=str.find(pattern,0);
		while(pos!=str.npos){//依次查找 
			if(start!=pos){
				res.push_back(str.substr(start,pos-start));
				start=pos+1;
				pos=str.find(pattern,start);
			}
		}
		if(!str.substr(start).empty()){//末端 
			res.push_back(str.substr(start));
		}
		for(int i=0;i
//可以使用 STL 的接口 
string str13;
str13="GFBACED";
string::iterator itstr=str13.begin();
for( ;itstr!=str13.end();itstr++){//遍历 
    cout<<*itstr;
}
cout<

 

你可能感兴趣的:(C++程序设计)