C string和c型別字元陣列的比較

2021-07-22 05:04:25 字數 1199 閱讀 9604

在c++中string是很方便操作的字串,支援多種算數運算和比較運算,操作起來非常靈活。

string也具有一些容器的性質,可以通過迭代器對字元元素進行訪問

c型別的字元陣列有如下三種初始化方式:

//前兩種的初始化方式是等同的,最後一種沒有『/0』char *cp="hello";char c_arr="hello";char c_arr2=;

這三種定義c字串的方式,其中前兩種雖然形式不一樣但含義是一摸一樣的,沒有差別,在計算字元長度的時候都會比實際顯示的字元長度多1,因為這兩種初始化會在字串末尾預設新增了乙個『/0』。而第三種初始化方式的長度就是方括號裡的字元數,這種方式並不會預設末尾結束符'/0'。如果用第三種方式宣告和前兩種方式同樣的字串則需這樣宣告:

char c_arr2=;

string可以用c字串進行初始化,如

string s1(cp);//複製cp中的所有字元到s1中(除了末尾空字元'/0')string s2(c_arr,2);//複製c_arr兩個字元到s2中string s3(c_arr2);//error

但注意,當對string用c字串進行初始化時,或是指定初始化的長度(如strings2(c_arr,2);),如果不指定長度需要c字串必須以'/0'結尾,如果不是以'/0'結尾則程式會出錯。如**(string s3(c_arr2);)程式編譯的時候就會出錯。

string型別也可以轉換成c型別的字串,可以通過string的成員方法string::c_str()進行轉換。

如下

string str("hello");const char  *cp=str.c_str();

字元型別和字元陣列

字串的輸入與輸出 對於 char s 100 cin和scanf s s 讀到空格結束,但是要注意的char s 100 100 來說,每次讀入一行就是可以讀入空格的直到換行 getline cin,s 和gets s 只能讀入乙個字串,讀到換行 printf s s 輸出不包含 0 puts s ...

C String和字串陣列操作函式

strstr str1,str2 用於判斷字串str2是否是str1的子串。如果是,則該函式返回 str1字串從 str2第一次出現的位置開始到 str1結尾的字串 否則,返null strlen char const str 用來計算指定字串 str 的長度,但不包括結束字元 即 null 字元 ...

c string和其他型別互轉

c 數值型別與string的相互轉換 c string的萬能轉換,從long string 之間的轉換來看看 c 11 使用函式模板將基本資料型別 整型 字元型 實型 布林型 轉換成string。ostringstream物件用來進行格式化的輸出,常用於將各種型別轉換為string型別 ostrin...