1. 程式人生 > >string用法

string用法

相當於c語言中的字元陣列。

string 提供了很多建構函式,可以以多種方式來初始化string字串

string str1= "abcdef";
string str2 (str1,3)  ;    // = def
string str3 (str1,3 2) ;   // = ed
char a[]={"zxcvb"};
string str4 (a,4)  // = zxcv
string str5 (5,a);        // = aaaaa
string str6 (a+2,a+4)  // = cvb


string過載了 =  +   +=  等多種運算子,讓字串組合拼接更簡單

string str1 ="abc";
string str2 ="def";
string str3 =str1+str2;   // abcdef
str1+=str2     //  abcdef


多種函式
str2.push_back('z')       //  defz
str2.append ("耶子")    //  defz耶子  
str2.assign ("hello")    //  hello  (重新賦值)   
str2.insert ( 3,"zz" )    //  helzzlo  (指定位置插入字串)
str2.erase (3,2)        // hello   (刪除下標為3,長度為2的字串)
str.lenth()                  // 長度
str.empty()                // 判斷空 
str2.resize(10)          // 強制把str2容量改為10
sr1.swap(str2)          //str1與str2交換


string可以按陣列方式,以下標來訪問。還可以用at()函式訪問指定的字元

string str1 ="abc";
string str2 ="def";
cout << str1[2];   //c
cout << str1.at(2) //c 


可以把 string 理解為一個特殊的容器,容器中裝的是字元

string str1 ="abc";
string ::iterator it =str.begin();
for(;it!=str.end();it++)
cout <<*it  // 依次輸出 a b c
sort (str.begin(),str.end()) ;//實際上就是地址 


輸入輸出

string str ;
getline (cin,str)//輸入一行字元,賦給str 
getline (cin,str ,'#')// 輸入一行字元,賦給str 以#結束
cout <<str; 


比較 在字典前面的字元小於後面的字元。 

string str1 ="abc";
string str2 ="def";
if(str1<str2)
{
printf("abc小於def"); 
}
str1.compare("aaa")//相等返回0 大於返回正數 小於返回負數
str1.compare(1,2,str2,2,2)// ab與 ef比較 


查詢 與strstr相似

#include "string.h"
#include "string"
#include "iostream"
using namespace std;
string::size_type t; //定義t為無符號整型  當前編譯環境中允許的連續記憶體區域的理論範圍
int main()
{

string str1 ="abcdefghabcl";
t=str1.find("abc");//=0;  find函式返回abc在str1 中第一次出現的下標位置 
t=str1.find("cd");//=2;
t=str1.find("abc",5)//從下標5開始找   =8 
t=str1.find("zz");//若沒找到返回很大的數 這個數等於 str1.npos 
cout <<t<<endl;
cout <<str1.npos;//=t 
 } 


char  *b;
b=strstr(a,"asd");
cout <<b ;//=asdasd 從該字元開始的字串為; 
cout <<b-a;//=4   輸出下標 


與char的相互轉化

char a[]="abc";
string str1 =a;//char 轉化為string 
char b[10];
strcpy(b,str1.c_str()); //string轉化為char