转载

C++中string类型详string

感觉string类型在C++中挺重要的,应用的时候特别多,掌握它,Qt中的QString

和Java里的string类型,感觉相差无几

string类的构造函数:


1:string(const char *s),将string对象初始化为s指向的字符串


2:string(int size,char ch),将string对象初始化为size个ch字符的字符串


3:string(const char *s,int size),将string对象初始化为s指向的字符串的前size个字符;


4:string(),  string(const string &str) 前一个为默认的构造函数,长度为0,后一个为复制构造函数


5:string(const string &str,string size_type pos=0,size_type n=npos)

将一个string对象初始化为对象str中从位置pos开始到结尾的字符,或从位置pos开始的n个字符

(string类型的位置是从零开始的)


string类型运算符的重载


string  s3=s1+s2;    

string  s4="hello"+s2;

string  s4="hello"+s2+"world";

string  s6="hello"+"world";  //这种合并方式是错的,不许要有string类型的变量才行

细细想一下,如果没有string类型的话,谁来调用操作符重载函数,所以说上面是错的

两个string字符串的比较可以直接使用==号比较


string类的方法: (这些方法可以让我们更容易使用它)


string.size() ,string.length()  这两个函数返回的都是string类字符串的长度


string.empty()  判断string字符串是否是空串,如果是返回true类型;


查找函数:

1:find(const string &str,int n)const  , find(const char *str,int n);

上面两个函数:从str的n位置开始,查找字符串str,如果找到,则返回该子字符串首次出现时其首字母索引

否则返回string::npos


2:string s.find(char ch,int n)const 

从字符串的n位置开始,查找字符ch,如果找到,则返回该字符首次出现的位置,否则返回string::npos


string类的遍历:

<span style="font-family:KaiTi_GB2312;">#include<iostream> 
using namespace std;
#include<string> 
int main()
{
 int i;
string A="qwerasdf";

for(i=0;i<A.length();i++)  //利用下标遍历 
cout<<A[i]<<' ';
cout<<endl;

string::iterator it; // 利用迭代器遍历
for(it=A.begin();it!=A.end();it++)
 cout<<*it<<' ';
 
return 0;
}</span>


string类与int类型的相互转化

<span style="font-family:KaiTi_GB2312;">int ICS(int I, string &S) //int change to string
{	
	stringstream stream;
	stream << I;
	stream >> S; 
	return 0;
}

int SCI(int &I,string S)//string change to int
{
	stringstream stream(S);
	stream >> I;
	return 0;
}</span>
以上必须包含头文件#include <sstream>,这是通过输入输出流进行操作


要用Cprintf,scanf对string类型进行输入输出,(做OJ题可以减少程序运行时间)

<span style="font-family:KaiTi_GB2312;font-size:18px;">prinf("%s",as.c_str()) //as为string对象</span>
<span style="font-family:KaiTi_GB2312;font-size:18px;">string as;
as.resize(100); //先要对其分配内存
scanf("%s",&as[0]);</span>




正文到此结束
本文目录