C風格字串與C 風格字串

2022-03-15 21:15:24 字數 1469 閱讀 7594

c風格字串:對字串進行操作的 c 函式定義在標頭檔案中;

1. 字串定義:char* result;

2. 字串的最後乙個字元是null字元('\0'),可以通過這個字元確定字串的結尾。

3. strlen()返回的是字串的大小;因此,分配空間的時候,需要比字串的實際空間大1.

e.g. char* copystring(const char* instring)

char *result = new char[strlen(instring)];//bug! off by one

strcpy(result, instring);

return result;

explain: strlen()返回的是字串的大小,比如"ab",返回的是2。而在new進行分配的時候,需要為'\0'分配乙個空間。分配語句要寫作,char *result = new char[strlen(instring) + 1];

4. strcpy(a,b):將字串b的內容賦值給字串a;a的大小可以大於b,將b放在a的開始的位置;

strcat(a,b):將字串b拼接到字串a的現有字元後面;

c++風格字串:

使用c++風格字串的時候,要將它當做是乙個普通的型別,如int,這樣反而會避免將string作為乙個類來理解所帶來的很多問題。

1. 支援中許多函式完成的同樣操作。

2. 字串定義:string mystring = 「hello」;

3. 操作符 = :複製字串;比如,string newone = original;會將後者複製給前者,不會出現兩個變數同樣指向乙個記憶體的情況。

4. 可以像int一樣使用 == 之類的操作符

5. 可以改變字串中的某乙個字元。 如 string mystring = "hello"; mystring[0] = 'l'; 這中操作是允許的。

字串直接量:

字串沒有變數名字,自身表示自身。

1. string literal:字串直接量: e.g. cout<<"hello"<2. 字串直接量可以賦值給變數,但是與字串直接量相關聯的記憶體空間位於唯讀部分,因此它是常量字元陣列。

char* ptr = "hello";

ptr[1] = 'a';//crash! attemps to write to read-only memory.

因此,當引用字串直接量的時候使用指向const的字元陣列:

const char* ptr = "hello";

ptr[1] = 'a';//bug! attempts to write to read-only memory.

3. 當將字串直接量賦值給字元陣列的初始值的時候。由於字元陣列存放與棧中,不允許引用其他地方的記憶體,因此編譯器會將字串直接量複製到站的陣列記憶體中。因此,可以進行相應的修改。

char  stackarray = "hello";

stackarray[1] = 'a';

C風格字串與C 風格字串

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

c風格字串與c風格字串陣列

include includeusing namespace std int main 輸出結果 0034ff10 0034ff10 0034ff04 013bdc80 char str abcd 先在文字常量區為 abcd 常量分配5b,接著在棧裡為指標str分配4b,並接收 abcd 字串的首位...

C風格字串

1 使用c標準庫函式,必須包含相應的c標頭檔案 include 2 操縱c風格字串的標準庫函式 strlen s 返回s的長度,不包含字串結束符null strcmp s1,s2 比較兩個字串s1和s2是否相同。若s1與s2相等,返回0 若s1大於s2,返回正數 若s1小於s2,則返回負數 strc...