String類別 在C語言中提供兩種支援字串的方式 可以使用傳統以null結尾的字元陣列 使用string類別 string類別是basic_string樣板類別的一特殊類別. basic_string類別分為兩個特殊類別, 其一是string, 另一是wstring
為何需要String類別 s1=“one”; // 可乎? s2=“two”; s3=s1+s2; //可乎? char s1[80], s2[80], s3[80]; s1=“one”; // 可乎? s2=“two”; s3=s1+s2; //可乎?
為何需要String類別 必須使用 strcpoy(s1,”one”); strcpoy(s2,”two”); strcpoy(s3,s1); strcat(s3,s2); 因為null結尾的字串並不能使用C++的標準運算字, 所以才有string類別產生.
為何需要String類別 一致性(字串已成為已定義的資料型態) 方便性(您可以使用標準C++的運運子) 安全性(不會使用超過陣列的上限) string類別並不屬於STL中的一部份,但為C++定義的另外一種容器,若要存取 string類別,需在程式碼中加入<string>標頭檔
使用String類別 string的建構函數 String(); String(const char *str); String(const string &str); string可以使用的運算子 = 指定; + 字串連接; += 字串連接及指定; == 等於; != 不等於; < 小於; <= 小於等於; > 大於; >= 大於等於; [] 陣列註標; << 輸出; >> 輸入;
使用String類別 example: string+string; string+c-string; c-string+string;
String類別的成員函數 append(); //將一字串的一部份加到另一字串後 insert(); //插入一字串 assign(); //將一字串指定給另一字串 append(); //將一字串的一部份加到另一字串後 insert(); //插入一字串 replace(); //取代字串 erase(); //移除字串 find(); //發現字串 compare(); //字串比較
String example #include<iostream> #include<string> Using namespace std; Int main() { string str1(“Demonstrating strings”); string str2(“String Two”); string str3; }
String example #include<iostream> #include<string> Using namespace std; Int main() { string str1(“Demonstrating strings”); string str2(“String Two”); string str3; str3=str1;//assign a string cout<<str1<<“\n”<<str3<<“\n”; str3=str1+str2; cout<<str3<<“\n”; if(str3>str1) cout<<“str3 >str1\n”; if(str3==str1+str2) cout<<“str3=str1+str2\n”; str1=“This is a normal string\n”; cout<<str1; string str4(str1); cout<<str4; cout<<“Enter a string:”; cin>>str4; return 0; }
String example cout<<“Remove 7 characters from str1:\n”; #include<iostream> #include<string> Using namespace std; Int main() { string str1(“This is a test”); string str2(“ABCDEFG”); cout<<“Initial string:\n”; cout<<“str1:”<<str1<<endl; cout<<“str2:”<<str2<<“\n\n”; cout<<“Insert str2 into str1:\n”; str1.insert(5,str2); cout<<str1<<“\n\n” cout<<“Remove 7 characters from str1:\n”; str1.earse(5,7); cout<<str1<<“\n\n”; cout<<“Replace 2 characters instr1 with str2:\n”; cout<<str1<,endl; return 0; }