學習中的一些筆記

2021-05-26 07:50:21 字數 2265 閱讀 4074

取得某字元最後出現處起的字串。

語法:string strrchr(string haystack, string needle);

返回值: 整數

函式種類: 資料處理

內容說明

本函式用來尋找字串 haystack 中的字元 needle 最後出現位置,並將此位置起至字串 haystack 結束之間的字串返回。若沒有找到 needle 則返回 false。

strcmp

原型:extern int strcmp(char *s1,char * s2);

用法:#include 功能:比較字串s1和s2。

說明:當s1s2時,返回值》0

舉例:// strcmp.c

#include #include main()

相關函式:bcmp,memcmp,stricmp,strncmp

size_t &&size_type **)

2.size_t是無符號整形,平常用的時候沒有覺得有什麼問題,但是今天的乙個程式怎麼弄就是不對,

反覆檢查邏輯錯誤並沒有發現有什麼錯誤,而且程式本身邏輯並不複雜。

後來經過一番探索,終於發現其錯誤發生在size_t上。考試大提示直接給**。

#include

using namespace std;

int main()

cin.get();

}t是size_t型別的,按照道理說這個if條件判斷肯定是能進去的,但是因為size_t型別是無符號,int型是有符號,結果就很妖怪的沒有進入if裡面。結果你會發現,編譯器把有符號的z轉換成了無符號的z,也就變成了4294967295,這樣一來if條件能判斷為true才怪!

3.先是看到了在看標準庫string時size_type,後來在學習標準庫bitset的時候有碰到了size_t,暈啊

先說說是在什麼樣的機緣巧合下與size_type相遇的吧,o(∩_∩)o

標準庫string裡面有個函式size,用來返回字串中的字元個數,具體用法如下:

string st("the expense of spirit/n");

cout << "the size of "<

<< "characters, including the newline"<

那麼size()這個函式返回的型別到底是什麼呢?一定要記住,絕對不是整形,而是size_type型別的,所以千萬不要把size的返回值賦給乙個int變數。

那麼size_type到底是一種什麼樣的型別呢?

string類型別和許多其他庫型別都定義了一些配套型別(companion type)。通過這些配套型別,庫型別的使用就能與機器無關。size_type就是這些配套型別中的一種。

size_type被定義為與unsigned型(unsigned int, unsigned long)具有相同的含義,而且可以保證足夠大能夠儲存任意string物件的長度。為而來使用由string型別定義的size_type型別。

程式設計師必須加上作用於操作符來說明所使用的size_type型別是由string類定義的。

我們為什麼不適用int變數來儲存string的size呢?

使用int變數的問題是:有些機器上的int變數的表示範圍太小,甚至無法儲存實際並不長的string物件。如在有16位int型的機器上,int型別變數最大只能表示32767個字元的string物件。

而能容納乙個檔案內容的string物件輕易就能超過這個數字,

因此,為了避免溢位,儲存乙個string物件的size的最安全的方法就是使用標準庫型別string::size_type().

一點注意:雖然是在學習標準庫string的時候巧遇了size_type型別,但是,其實vector庫也可以定義size_type型別,在vector庫中還有乙個difference_type型別,

該型別用來儲存任何兩個迭代器物件間的距離,所以是signed型別的。

什麼是size_t型別呢?其實本質上和size_type沒有多大區別

其實size_t和size_type類似,size_t 型別定義在cstddef標頭檔案中,該檔案是c標準庫的標頭檔案stddef.h的c++版本.它是乙個與機器相關的unsigned型別,其大小足以保證儲存記憶體中物件的大小。

用法如下:

bitset<32> bitvec;

size_t sz=bitvec.size();

另外sizeof操作符的返回值的型別也為size_t哦

我的一些學習筆記

集合類和陣列之間的橋梁是由 集合類中的 toarray 方法 和 陣列類中的arrarys.aslist來充當。關於迭代器 如果要呼叫 它的remove 方法則至少要先呼叫一下 next 方法。可以認為迭代器是指向兩個元素之間的位置 呼叫一次 next 它就把前乙個元素返回 remove 方法實際上...

redis 學習的一些筆記

該版本對應的vs2010 2.8對應的是2013 2 啟動執行,debug版本下的 redisserver 3 redis cli h ip port 6379 預設是127.0.0.1 埠 6379 進入cmd 1 incr key 該命令預設是整形的value 遞增key值對應的整數 2 set...

學習js的一些筆記

上面的這兩個繫結方法,第二個不能正常執行,第乙個能正常執行。第二個 document ready 在dom節點載入完之後,資料載入之前就立刻執行了,因此後面 this val 你取不到值,因為此時資料還沒有載入到dom節點裡面去。第二個能正常執行,因為on是在dom全部載入完畢且資料也載入完畢後才執...