第1章 字串

2021-05-10 08:40:07 字數 2083 閱讀 7670

字串是程式中經常使用的一種資料型別。串,顧名思義就是一些列單個元素的連線組合,那麼字串也就是由一系列單個字元連線而成。在上一堂課上,我們有一行**是:

std::cout

<<"hello world!"

<這行**中,我給大家介紹了兩個c++標準庫物件以及使用方法。但是其中的"hello world!"我沒有給大家解釋,其實這就是c++中的字串字面量。

這裡提到乙個字面量,可能有些朋友就要犯糊塗了,因為這個詞似乎沒有聽說過。所謂字面量,就是從字面上直接表現其值的常量。c++中字面量就是我們在寫程式的時候直接寫出來的一些值,比如1、2、5.1、』a

』、」hello

」等等。c++中表示字元字面量和字串字面量的語法不同,單個字元用一對單引號括起來,而字串是由一對雙引號括起來。

說完了字面量,下面就介紹c++中使用字串的常用方法。

這裡我將介紹std::string。相信聽了上一堂課的朋友可能會聯想到,這又是乙個標準庫物件。這個聯想對了一半,為什麼說是一半呢?std::string的確是標準庫設施沒錯,但是它不是乙個物件,而是乙個標準庫定義的型別,型別就是用來修飾物件的。我們說上一堂課的std::cout物件是乙個std::ostream型別的物件,也就表示std::cout是由std::ostream型別所修飾。

這裡我先岔開話題,介紹一下什麼是物件,因為往後的課程中我會大量使用這個概念。我所指的物件是乙個較為寬泛的概念,並把它分為無名物件和有名物件。像我們上面提到的字面量就是一種無名物件,這種物件只有值,而沒有名字,所以說我們一般不能通過名字去訪問它。程式中我們更多使用的是有名物件,因為我們會常常對乙個物件訪問多次,為了能夠準確的找到物件,我們就為其命名,然後就可以通過名字來找到它了。物件和型別是分不開的,型別是乙個物件的必備屬性,值也是物件的必備屬性,有了型別和值就可以構成乙個物件。有些物件還具備介面,這些介面由其型別所描述,所有具備此型別的物件都具有相同的介面。對於介面這個概念我們後面會提到。

乙個物件都有生命週期,它在其生命週期內保持有效性,當生命週期結束時,那麼這個物件也就不存在了,也就是無效了。那什麼決定其生命週期呢?這得分幾種情況。目前為止,我們接觸到的物件是被稱作區域性物件的一種存在於棧中的物件(如果不知道什麼是棧,可以查閱相關資料),以及本堂課會出現的全域性物件和臨時物件。全域性物件,顧名思義就是屬於整個程式中的物件,其生命週期也是伴隨整個程式的,它是一種生命週期較長的物件。而臨時物件的生命週期一般是在其表示式內,表示式結束,其生命期也就結束。區域性物件則是由一對{}來決定,而且是包含這個物件的最內層的{}。以後我們還會接觸到更多的情況,大家準備好,我們一步一步慢慢的將這些概念深刻於腦中。

(參考文章)

回到正題,我們使用std::string來建立乙個無名物件的方法是std::string(

「hello」);

這是個構造物件的語法。呼叫的是std::string的乙個建構函式。這裡提到的建構函式就是std::string型別的乙個介面。所謂介面,就是物件所屬型別提供的用來操作訪問物件的一組方法。當然,std::string還提供了很多介面,我們將這些介面(除了建構函式和析構函式)統一的稱為成員函式。這一課我們將接觸到std::string的三種建構函式以及不同的構造形式,還將利用其幾個介面來完成我們對字串的操作(包括字串拼接、輸出、拷貝等)。

有些時候,我們需要使用到乙個字串,但是我們又絕對不會去修改這個字串,那麼它應該成為乙個常量(即不會改變的量)。c++中定義常量用const關鍵字,定義乙個字串常量,我們使用const std::string name(

「ghost」);

這樣的語法。如果我們試圖通過這個有名物件的名字name去修改它,編譯器將會給出嚴厲的錯誤提示。

最後,我談談學習的方法。當我們學習乙個新鮮的事物的時候,總是會有好多好多得疑問,並且特別想把它的方方面面全都掌握。然而欲速則不達,我們應該以一種循序漸進的方法來學習。或許今天的例子中存在非常多得知識點,並且會產生很多的疑問,但是我們應該以今天我們學習的主體內容為主,將這些與主題內容符合的知識點學到手,學紮實。漏掉的東西不是不學,而是它應該在後面的某個時段出現才合適,所以我們就耐心的等到該學習它的時候再去研究,到時回頭看以前的例子也就會明白更多了。

好了,這堂課涉及的一些概念差不多就這些了,更多的細節在課堂上我們會一一講解。

下一課:c++課堂第2章 迴圈和計數 希望我的課堂對大家學習c++有所幫助

第 11 章 字串

字串是以空字元 0 結尾的 char 型別陣列。有多種方法可以定義字串 字串常量 char 型別陣列 指向 char 的指標。2.1 字串常量 用雙引號括起來的內容稱為字串字面量,也叫做字串常量。雙引號中的字元和編譯器自動加入末尾的 0 字元,都作為字串儲存在記憶體中。字串常量屬於靜態儲存類別,這說...

第4章 字串

4.1 字串簡介 字串是由若干字元組成的序列。4.1.1 字串的概念 1.使用單引號標識字串 2.使用雙引號標識字串 3.使用三引號標識字串 4.1.2 轉義字元 4.2 字串的輸出與輸入 4.2.1 字串的輸出 4.2.2 字串的輸入 input 4.3 字串的索引與切片 4.4 字串的運算 4....

第9章 字串 字元和位元組

c語言並沒有顯式的字串資料型別,因為字串以字串常量的形式出現或者儲存於字元陣列中。nul位元組是字串的終止符,但它本身並不是字串的一部分,所以字串的長度並不包括nul位元組。1 求字串長度 strlen 2 複製字串 strcpy 程式設計師必須保證目標字元陣列的空間足以容納需要複製的字串。如果字串...