構(gòu)造函數(shù)
- 構(gòu)造函數(shù):
string(const char* s)
字符指針
string s2("I am s2!!");
cout<<"s2 : "<<s2<<endl;
- 構(gòu)造函數(shù):
string(size_type n,char c)
重復(fù)char字符n次
string s3('$',15);
cout<<"s3 : "<<s3<<endl;
3.構(gòu)造函數(shù):string(const string& str)
復(fù)制構(gòu)造函數(shù)
string s4(s2);
cout<<"s4 : "<<s4<<endl;
- 構(gòu)造函數(shù):
string()
默認(rèn)構(gòu)造函數(shù)
string s1;
cout<<"s1 : "<<s1<<endl;
- 構(gòu)造函數(shù):
string(const char* s,size_type n)
字符串的前n個(gè)字符(如果是 string參數(shù),則賦值的是后面n個(gè)字符串)
string s5("I am a master",4);
cout<<"s5 : "<<s5<<endl;
- 構(gòu)造函數(shù):
string(begin,end)
如果是數(shù)組可以直接這樣,因?yàn)閿?shù)組名就是首字符地址。但是string對(duì)象則不能,因?yàn)椴槐硎镜刂?,所?amp;string[n]
char arr[]="I am Jeff and I am cool";
string s6(arr+5,arr+23);
cout<<"s6 : "<<s6<<endl;
string s7(&s6[5],&s6[10]);
cout<<"s7 : "<<s7<<endl;
- 構(gòu)造函數(shù):
string(const string& str,size_type pos=0,size_type n=npos)
從pos個(gè)字符開(kāi)始,到n個(gè)字符結(jié)束。 npos表示字符串末尾。
string s8(s6,2,10);
cout<<"s8 : "<<s8<<endl;
功能
s1 +="I am Jeff "; += 重載運(yùn)算符
cout<<"s1 now :"<<s1<<endl;
s1[0] = 'i'; []重載運(yùn)算符
cout<<"s1 now :"<<s1<<endl;
s1 = s2+s3; +和=重載運(yùn)算符
cout<<"s1 now :"<<s1<<endl;
s1 ="I am Jeff";
cout<<"s1 now :"<<s1<<endl;
s1 = s1+", who are you?";
cout<<"s1 now :"<<s1<<endl;
輸入
C風(fēng)格字符串
char info1[100],info2[100],info3[100];
cin>>info1; 讀取一個(gè)字符
cin.getline(info2,100); 丟棄\n
cin.get(info3,100); 將\n留在隊(duì)列
cout<<"info1 :"<<info1<<endl;
cout<<"info2 :"<<info2<<endl;
cout<<"info3 :"<<info3<<endl;

string風(fēng)格
string str1,str2;
cin>>str1; 讀取一個(gè)詞,而不是一個(gè)character
getline(cin,str2); 讀取一行,刪除\n
cin.getline(info1,100,':')
getline(cin,str1,':')
確定邊界字符,然后該字符會(huì)被刪除
- C風(fēng)格字符串,cin是調(diào)用對(duì)象。
cin.operator>>(info1)
string字符串,string是調(diào)用對(duì)象.operator>>(cin,str1)- getline有三種情況會(huì)被stop:
- 到達(dá)文件尾,輸入流eofbit被設(shè)置,fail()和eof()會(huì)返回true
- 遇到分界字符,分界字符從輸入流刪除,但不存儲(chǔ)它
- 讀取字符達(dá)到最大值(string::npos和可供分配內(nèi)存字節(jié)數(shù)中較小一個(gè)),將設(shè)置輸入流的failbit,fail()將返回true
- string的operator>>()函數(shù)遇到空白字符就會(huì)停止,并將空白字符符留在隊(duì)列中
使用字符串
1. 比較字符串大小
2. 確定字符串長(zhǎng)度【size()或者length()】
3. find()方法重載
size_type find(const string& str, size_type pos=0) const
從pos位置查找子字符串str,如果找到則返回首字符出現(xiàn)的位置。否則返回string::npos
size_type find(const char* s, size_type pos=0) const
同上
size_type find(const char* s,size_type pos=0, size_type n)
從pos位置開(kāi)始,查找s前n個(gè)字符組成的子字符串,如果找到返回首字符位置,沒(méi)找到返回string::npos
size_type find(char ch,size_type pos=0) const
從pos開(kāi)始,查找ch。
find_first_of("hark")
就是找hark單詞里的四個(gè)字符,如果出現(xiàn)某一個(gè)字符就返回首次出現(xiàn)的位置。
find_last_of("hark")
返回最后一次出現(xiàn)相關(guān)字符的位置
find_first_not_of(“xxx")
str1.find(ch) != string::npos為true的時(shí)候就是該字符存在于字符串內(nèi)。
4. 查看分配的內(nèi)存塊大小
capacity()
reserve(size) 【請(qǐng)求內(nèi)存塊最小長(zhǎng)度】
實(shí)際上C++分配的內(nèi)存塊大小比字符串要大,如果字符串不斷增大,C++將分配一個(gè)兩倍大的內(nèi)存塊
5. 返回一個(gè)指向C-風(fēng)格字符串的指針
c_str()
……還有很多很多功能