C 相對於C語言,大大增強了對字串的支持,除了可以使用C風格的字串,還可以使用內建的資料類型string,string類別處理起來字串因為函數的封裝就顯得特別方便,下面我們統計一下string類別的函數
首先,想呼叫string類別先包含其頭檔#include 98c455a79ddfebb79781bff588e7b37e
string s1;//变量s1只是定义但没有初始化,所以其默认值为""即空字符串string s2="Hello World!";//变量s2在定义时同时被初始化/*string类的变量可以相互之间直接赋值,不需要像C语言一样,使用strcpy()函数一个字符一个字符的去赋值*///例如string s3=s2;//此时s3的内容和s2一样也是Hello World!//如果需要定义一个由很多相同字符组成的字符串时,还有另外的简便写法string s4(int n,char c);//s4是被初始化为由n的字符c组成的字符串
關於求字串的長度,在C語言中,我們就可以使用strlen()函數求,C 中同樣可以使用strlen(s3);這種方法求出s3字串的實際長度,但是因為C 關於string類別與C語言有本質區別,所以我們一般呼叫string.length()函數來求字串的長度
int len=0;len=string.length(s3); cout<<"s3字符串的长度为"<<len<<endl;
在上面我們提到,如果將一個string類別字串賦值給另一個string類別字串,只需要直接賦值就可以了,但是如果是string類別賦值給char*類別或是char*類別賦值給string類別該怎麼辦呢?當然是不能直接賦值的,直接看代碼
//string类赋值给string类string s1="hello world";string s2; s2=s1;//string类赋值给char*类string s1="hello world";char str[20]={0}; strcpy_s(str,s1.c_str());//char*类赋值给string类char str[20]="hello world";string s2; s2=str;
同時,string類型的變數也可以使用字元數組的操作來改變其裡面的某一個變量,例如
#include <iostream>#include <string>string s1="this is my house";int i;//如果我们现在想改变里面某一个字符,可以直接将s1当成数组,找到对应的下标来改变i=6; s[i]='t';//这样就可以将第6个字符改成t了
有了string類,我們可以使用」 「或」 =「運算子來直接拼接字串,非常方便,再也不需要使用C語言中的strcat()、strcpy()、malloc() 等函數來拼接字串了,再也不用擔心空間不夠會溢出了,用」 「來拼接字串時,運算子的兩邊可以都是string 字串,也可以是一個string 字串和一個C風格的字串,還可以是一個string字串和一個char 字元。
string類別的賦值
string &operator=(const string &s);//把字符串s赋给当前字符串 string &assign(const char *s);//用c类型字符串s赋值string &assign(const char *s,int n);//用c字符串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个字符赋给当前字符串string &assign(const_iterator first,const_itertor last);//把first和last迭代器之间的部分赋给字符串
string的連接
string &operator+=(const string &s);//把字符串s连接到当前字符串的结尾 string &append(const char *s);//把c类型字符串s连接到当前字符串结尾string &append(const char *s,int n);//把c类型字符串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个字符cstring &append(const_iterator first,const_iterator last);//把迭代器first和last之间的部分连接到当前字符串的结尾
string的子字串string substr(int pos = 0,int n = npos) const;/ /返回pos開始的n個字元組成的字串
void swap(string &s2); //交换当前字符串与s2的值
string的查找
rfind() 和find() 很類似,同樣是在字串中尋找子字符串,不同的是find() 函數從第二個參數開始往後查找,而rfind() 函數則最多查找到第二個參數處,如果到了第二個參數所指定的下標還沒有找到子字符串,則傳回一個無窮大值4294967295
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在当前串中的位置int rfind(char c, int pos = npos) const;//从pos开始从后向前查找字符c在当前串中的位置int rfind(const char *s, int pos = npos) const;int rfind(const char *s, int pos, int n = npos) const;int rfind(const string &s,int pos = npos) const;//从pos开始从后向前查找字符串s中前n个字符组成的字符串在当前串中的位置,成功返回所在位置,失败时返回string::npos的值
string類別的插入函數:
string &insert(int p0, const char *s);string &insert(int p0, const char *s, int n);string &insert(int p0,const string &s);string &insert(int p0,const string &s, int pos, int n);//前4个函数在p0位置插入字符串s中pos开始的前n个字符string &insert(int p0, int n, char c);//此函数在p0处插入n个字符citerator insert(iterator it, char c);//在it处插入字符c,返回插入后迭代器的位置void insert(iterator it, const_iterator first, const_iterator last);//在it处插入[first,last)之间的字符void insert(iterator it, int n, char c);//在it处插入n个字符c
關於C 中string類別物件的用法,今天講了一點基礎。
相關推薦:
以上是關於C++中string類別物件的用法總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!