c 風格字串與string物件的對比

2021-09-05 01:20:23 字數 1670 閱讀 8182

首先我們來看看c風格字串

標頭檔案為c標準庫檔案string.h或對應的c++版本cstring

#include#include
c風格字串初始化方式

char *a = "hello";

char a = "hello";

char a = ;

c風格字串的函式

strlen(a); //不計算『\0』

strcmp(a1,a2); //大於返回正數,等於返回0,小於返回負數

strcat(a1,a2); //a2連在a1後面,返回a1

strcpy(a1,a2); //a2拷貝到a1中,返回a1

然後我們對比一下string物件

標頭檔案為 c++ 標準庫檔案 string

#include
初始化方式

string s1; //預設初始化,s1是乙個空串 

string s2(s1); //拷貝初始化,s2是s1的乙個副本

string s2 = s1; //拷貝初始化,同上

string s3("value"); //直接初始化,s3是字面值"value"的副本

string s3 = "value"; //直接初始化,同上

string s4 = string("value")//拷貝初始化,s4是乙個物件的副本

string s5(10,'c'); //直接初始化,s5的內容為cccccccccc

string物件上的操作

cout << s //將s寫到輸出流cout當中,返回cout 

cin >> s //從cin中讀取字串賦給s,字串以空白分隔,返回s

getline(cin,s) //從cin中讀取一行賦給s,返回s

s.empty() //s為空返回true,否則返回false

s.size() //返回s中字元的個數 s[n] //返回s中第n個字元的引用,位置n從0計起

s1 + s2 //返回s1和s2連線後的結果 s1 = s2 //用s2中的副本代替s1中原來的字元

s1 == s2 //如果s1和s2中所含的字元完全一樣,則它們相等;string物件的相等性對大小寫敏感

s1 != s2 //同上

< , <= , > , >= //利用字元在字典中的順序進行比較,大小寫敏感

string物件與c風格字串的轉化

string物件轉換為c風格字串

string str = "abcd";

const char *a = str.c_str(); //從string變為const char *

string str = "abcd";

char *a = &str[0]; //從string變為const char *

c風格字串轉換為string物件

char a = ;

const char b = ;

string str = a;

string str = b; //直接轉換

C風格字串與string

c風格字串並不是一種型別,它指的是一種程式設計習慣,指c語言中以 0 結尾的字串。c語言中沒有字串型別,通常用字串陣列來存放乙個字串 可以直接將乙個字串直接量 字面量 直接賦值給陣列 可以定義長度也可以不指定 編譯器會在字元陣列末尾自動的新增 0 作為串的結束符。用字串給字元陣列賦值時由於要新增結束...

string物件和C風格字串

我們都知道允許使用字串字面值來初始化string物件 string s hello world c 規定,任何出現字串字面值的地方都可以用以空字元結束的字元陣列來替代 上述性質反過來並不成立 如果程式的某處需要乙個c風格字串,無法直接用string物件來替代它。例如 不能使用string物件直接初始...

C風格字串與C 風格字串

c風格字串 對字串進行操作的 c 函式定義在標頭檔案中 1.字串定義 char result 2.字串的最後乙個字元是null字元 0 可以通過這個字元確定字串的結尾。3.strlen 返回的是字串的大小 因此,分配空間的時候,需要比字串的實際空間大1.e.g.char copystring con...