C與C++風格字串

來源:互聯網
上載者:User

C風格字串:對字串進行操作的 C 函數定義在標頭檔<cstring>中;

 

     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. 支援<cstring>中許多函數完成的同樣操作。

     2. 字串定義:string myString = “hello”;

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

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

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

字串直接量:字串沒有變數名字,自身表示自身。

    1. string literal:字串直接量: e.g. cout<<"hello"<<endl; 代碼中通過包含"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';

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.