string用法
阿新 • • 發佈:2019-02-10
相當於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