每種編程語言,除了int,float,long這些最基本的數據類型外,字符與字符串也必須是“必備全家桶”裡面的一員。
C 的字符串,對比許多後起之秀,當然說不上十分方便使用(也許會覺得難用),但其靈活性絕對是杠杠的。
字符串,本質上說其實就是“一串字符”,也就是字符數組。
字符串的初始化
char charr1[10] = "android"; //
char charr2[20] = {"hello"}; // C 11
char charr2[20] {"jaguar"}; // C 11
string str1 = "morgan"; // std::string
string str2 = {"morgan"};
string str3 {"morgan"};// C 11
我們可以通過兩種方式來聲明字符串類型,一種是char數組,一種是std标準庫中的string類。
其實上面的char數組,等價于下面的形式:
char charr1[10] = {'a','n','d','r','o','i','d','\0','\0','\0'};
因為數組本質上其實也是指針,因此在C 中,在char數組用'\0'元素表示字符串的結束。
char數組必須要指定長度,相比較而言,string就不需要那麼麻煩。
字符串的相關操作1.獲取字符串長度
int len1 = strlen(charr1);// 使用庫函數 strlen()
int len_str1 = str1.size();//調用string對象的成員函數size();
char* newChars = strcat(charr1, charr2);// 結果是 "androidhello"
string newStr = str1 str2;
strcpy(charr3, charr1);// dst, src: copy from charr1 to charr3;
string str4 = str1; // copy str1 to str4;
通常我們都有從命令行輸入字符串的訴求,來看看char數組、string對象分别是怎麼實現的?
char name[20];
//cin >> name; 這種方法會有陷阱,後面展開說明
cin.getline(name, 20);
string sName;
getline(cin, sName);
cin >> sName;
函數原型:
size_type find(const string& str, size_type pos=0) const
char數組其實有不少缺點,C 建議使用string替代char數組,主要原因有以下幾點:
char site[10] = "house";
strcat(site, "is white in DC."); //拼接後長度大于10,将會覆蓋相鄰的内存
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!