2019-11-2218:08:06構(gòu)造字符串#include<iostream> #include<string> using namespace std; int main() { using namespace std; string one("My name is String!");//初始化,C-風(fēng)格 cout << one << endl;//使用重載<<運(yùn)算符顯示 string two(20, '$');//初始化為由20個(gè)字符組成的字符串 cout << two << endl; string three(one);//復(fù)制構(gòu)造函數(shù)將string對象three初始化為one cout << three << endl; one += "I love wly.";//附加字符串 cout << one << endl; two = "Sorry!"; three[0] = 'p';//使用數(shù)組表示法訪問 string four; four = two + three; cout << four << endl; char alls[] = "All's well that ends well."; string five(alls, 20);//只使用前20個(gè)字符 cout << five << "!\n"; string six(alls + 6, alls + 10); cout << six << endl; string seven(&five[6], &five[10]); cout << seven << endl; string eight(four, 7, 16); cout << eight << endl; return 0; }
程序說明:
S=”asdfg”; S1=S2 S=’?’;
數(shù)組名相當(dāng)于指針,所以alls+6和alls+10的類型都是char *。 若要用其初始化另一個(gè)string對象的一部分內(nèi)容,則string s(s1+6,str+10);不管用。 原因在于,對象名不同與數(shù)組名不會(huì)被看作是對象的地址,因此s1不是指針。然而, S1[6]是一個(gè)char值,所以&s1[6]是一個(gè)地址。 故可以寫為:string seven(&five[6], &five[10]);
string eight(four, 7, 16); string類輸入對于C-風(fēng)格字符串: char info[100];
#include<iostream> #include<string> using namespace std; void Print(char s[]) { int i; for (i = 0; s[i] != '\0'; i++) cout << s[i]; cout << endl; cout << "字符串長: " << i << endl; } int main() { char info[100]; cin >> info; Print(info); cin.get(); cin.getline(info, 100); Print(info); cin.get(info, 100); Print(info); return 0; }
對于string對象: string stuff; cin >> stuff; //read a word getline(cin,stuff); //read a line,discard \n 兩個(gè)版本的getline()都有一個(gè)可選參數(shù),用于指定使用哪個(gè)字符來確定輸入邊界 cin.getline(info,100,':’); getline(stuff,’:’); 區(qū)別:string版本的getline()將自動(dòng)調(diào)整目標(biāo)string對象的大小,使之剛好能夠存儲(chǔ)輸入的字符: char fname[10]; string fname; cin >> fname;//could be a problem if input size > 9 characters cin >> lname;//can read a very,very long word cin.getline(fname,10); cetline(cin,fname); 自動(dòng)調(diào)整大小的功能讓string版本的getline()不需要指定讀取打多少個(gè)字符的數(shù)值參數(shù)。
|
|