c++ 提供了兩種字串表示形式,第一種為相容c的字元陣列形式,第二種是c++中引入的string類形式。
1、c語言的字串實際上是以空字元 '\0' 作為終止符的一維字元陣列。如下:
char a=;
如果字元陣列中沒有出現空字元 '\0',則不能稱作字串,比如:
char a=;
如果不新增終止符,輸出字元陣列a會得到「燙燙燙」亂碼字元。c語言是不會檢查陣列邊界的,因此編譯器輸出最後乙個字元之後還會繼續輸出後面未經初始化的記憶體中的內容,而ms編譯器在 debug 模式下,會把未初始化的棧記憶體全部填成 0xcc,用字串來看就是"燙燙燙"。
2、根據字串陣列的初始化,上述語句還可以寫作:
char a="hello";
編譯器會在初始化陣列時,自動把 '\0' 放在字串的末尾。
3、也可以使用指標來建立字串以及字元陣列
char *a="hello";
char *b=;
同樣如果使用指標輸出字元陣列也會得到「燙燙燙」亂碼
4、c++ 中有許多函式用來操作以 null 結尾的字串
序號函式 & 目的
1strcpy(s1, s2);
複製字串 s2 到字串 s1。
2strcat(s1, s2);
連線字串 s2 到字串 s1 的末尾。
3strlen(s1);
返回字串 s1 的長度,不包含 '\0' 字元。
4strcmp(s1, s2);
如果 s1 和 s2 是相同的,則返回 0;如果 s1s2 則返回值大於 0。
5strchr(s1, ch);
返回乙個指標,指向字串 s1 中字元 ch 的第一次出現的位置。
6strstr(s1, s2);
返回乙個指標,指向字串 s1 中字串 s2 的第一次出現的位置。
1、為了在程式中使用string型別,必須包含標頭檔案 。
#include
2、string類是乙個模板類,位於命名空間std中,因此還需要宣告命名空間std
using namespace std;
3、定義乙個字串變數並初始化
string str="hello";
string str=;
#以上兩種方式都會自動在末尾新增乙個空字元 '\0',輸出時不會出現亂碼情況
4、可以用 ==、>、<、>=、<=、和!=比較字串,也可以用+或者+=操作符連線兩個字串,並且可以按照字元陣列索引的方式獲取字串中特定的字元。
string str="hello";
string str1=;
str+=str1;
char a=str[3];
5、string類的成員函式
包括字串屬性、字元增刪改查等操作等等。詳細資訊可以查閱官方文件。
C 字串詳解
參考 書本 c primer plus string類 字串修改 2.assign 3.insert 4.replace 5.其他 copy 和swap c 中的字串有兩種 c 風格字串和基於string類庫的方法 c 風格字串以空字元結尾 0 使用引號括起的字串隱式地包括結尾的空字元 string...
C 字串操作詳解
選用c 標準程式庫中的string類,是因為他和c string比較起來,不必擔心記憶體是否足夠 字串長度等等,而且作為乙個類出現,他整合的操作函式足以完成我們大多數情況下 甚至是100 的需要。我們可以用 進行賦值操作,進行比較,做串聯 是不是很簡單?首先,為了在我們的程式中使用string型別,...
c語言字串詳解
c語言字串,c語言處理字串一般使用字元陣列來處理,記得加上結束符,否則會出現亂碼。1 通過字元陣列來處理 include include include int main void 實際上字串長度為5,賦值比5位大,自動加上結束符號 char str2 0 表示結束符號 char str3 10 c...