第四章總結(一)

2021-10-07 11:41:28 字數 2773 閱讀 3478

字串string類簡介

建立陣列就很簡單了,就直接typename arrayname[size],這裡的typename 可以是你自己定義的結構體,也可以是基本資料型別,然後這裡的size如果是在vs編譯器中,必須是常量或者是const變數,這裡的常量是說你直接把size寫死,比如int a[5]。

但是實際這種還是不太方便,因為我們有時候確實不知道陣列應該開多大,這裡就需要我們去動態的申請陣列,也就是使用new,直接用**講解

#include

using

namespace std;

intmain()

//使用部分

c風格字串就是以空字元』\0』結尾的char陣列,下面**可以看出,strlen等字串操作函式都是以最後的空字元作為結束的標記

char a[3]

=;char b[4]

=;cout <<

strlen

(b)<< endl;

//3cout <<

sizeof

(b)<< endl;

//4

但是上面這種方法未免太過麻煩, 需要乙個字母乙個字母的寫,所以有了下面這種寫法

char a = 「hello world」;

這種寫法char陣列a的長度會被編譯器自動初始化,然後"hello world"被稱為字串常量

關於cin>>,cin.getline(str, size),cin.get(str,size),cin.get(),以及getline(istream,string)混合使用及可能出現的問題,參考下面部落格

我自己的話總結一下就是,cin>>在你輸入的時候,你按回車,會把你敲得東西放進緩衝區,然後回車產生的換行符也被送了進去,然後檢測到緩衝區有換行,cin>>便把緩衝區的資料放進變數裡,然後換行符還在緩衝區,這樣緊接著使用cin.getline(str, size),cin.get(str,size),以及getline(instream,str)時就會把換行符讀走,導致和我們想的不一樣,那為什麼連續兩次使用cin卻不會異常呢,因為cin的時候,並不是只要讀取到回車符就執行完cin,而是必須要讀取到相對應的型別的內容從鍵盤敲入,才會真正執行完cin,不允許輸入為空,所以cin>>在等待鍵盤敲入時,你哪怕先敲回車符,cin>>語句也不會執行結束

標頭檔案 #include,然後string str,str的型別是乙個string,但是str[0]的型別是乙個char,然後string的物件可以自動改變大小,初始化的話既可以使用大括號,也可以直接指定字串常量上去

之前我們使用char陣列的時候,如果需要進行賦值,可能會出現問題,但是string的話就不會了,比如下面這段**

string str1 =

"hello"

; string str2 = str1;

char ch1[6]

="hello"

;char ch2[10]

;strncpy_s

(ch2, ch1,2)

;//這裡表示從ch1中拷貝兩個字元到ch2中,但是ch2是否有空間儲存,這個無法判斷,如果是char ch2[1]的話,還是會有執行時錯誤

cout << str2 <<

"---"

<

但是string就不會出現這種問題,因為可以自己調整容量,這一點可以通過string類的capacity方法檢視,這個方法返回的就是系統為string物件開闢的容量,當容量滿的時候,會自動新增,而且擴容也是有規律的,至於為什麼是16,應該是和不同的平台或者編譯器有關

(環境為vs2019)

string str1 =

"hello"

; cout << str1.

size()

<< endl;

//5 cout << str1.

capacity()

<< endl;

// 15

str1 =

"hello hello hello"

; cout << str1.

size()

<< endl;

//17

cout << str1.

capacity()

<< endl;

//31

str1 =

"hello hello hello messi messi messi"

; cout << str1.

size()

<< endl;

//35

cout << str1.

capacity()

<< endl;

//47

上述**在dev c++中的測試結果為55

1717

3535

在ubuntu19.04 g++8.3.0中測試結果,是直接翻倍的515

1730

3560

拼接的話,char陣列使用strncat,string直接用+號就行了,然後這裡只是做乙個簡介,因為後面第十六章的時候還會詳細介紹

第四章總結

1.對貪心演算法的認識 貪心演算法在求解問題時,不從整體上考慮,而是得到某種意義上的區域性最優解,做出當前看來是最好的選擇。每次的選擇都會依賴之前作出的選擇,而對後面的選擇不會產生影響。它具有最優子結構的性質,即問題的最優解包含其子問題的最優解。但貪心演算法不是對於所有的問題都能得到整體最優解,最重...

第四章(筆記總結)

簡單的組合語言源程式基本語法 assume cs code code segment mov ax 0001h add ax ax mov ax 4c00h int 21h code ends end在組合語言源程式中,包含兩種指令分別是,彙編指令和偽指令 彙編指令 1 mov ax 0001h i...

第四章作業總結

include using namespace std int main cout a endl system pause return 0 注意getchar 不能迴圈條件用一次,算式中再用一次,否則算兩次getchar 只能先設個變數再用。將使用者輸入的任意十進位制整數轉換為16進製制數輸出 利...