新概念:
連續輸入的資料區分、字串字面量連線、物件初始化、輸入檢測
連續輸入是根據資料型別以及空白間隔來區分不同資料的。假設有這樣一段**:
inti;
std::strings;
std::cin>>i>>s;
我們輸入的資料是:
123abc
,那麼std::cin
能夠自動區分出這是兩個資料,並將
123賦給變數i,將
abc賦給變數
s。如果我們輸入的資料是:
123456
,那麼std::cin
會將123
賦給變數i,而
456將作為字串賦給變數s。
字串字面量可以用多個「」對來連線,但是中間只能是空白間隔。例如我們寫
std::string
s = "abc"
"def"; 和寫
std::string
s = "abcdef";
是等同的。有些時候我們的字串字面量可能會非常長,那麼我們使用多個「」來分行寫將會便於我們閱讀,也可以進行一些段落或者行的區分等等。
內建型別物件未初始化時值未定義,自定義物件預設使用預設構造進行初始化。例如:
std::string
s; s
將會是乙個空字串,而
inti; i
的值我們是無法預知的。
所以我們對待內建型別的物件,通常是在宣告這個物件的時候進行初始化,避免由於以後忘記初始化而導致一些莫名其妙的錯誤或者異常。如果內建型別作為自定義型別的成員,那麼我們應該在我們自定義類的建構函式初始化列表中將其初始化,這些都是良好的編碼習慣,我們應該學習並養成這樣的習慣。
對於輸入檢測(即判斷輸入操作成功與否),
std::cin
遇到輸入資料型別不匹配、檔案結束符或者硬體故障就會導致我們的檢測為假。所謂資料型別不匹配就是類似這樣的輸入:
inti;
std::cin>>i;
我們輸入:a
我們輸入了乙個字元,而我們期望的是接受乙個整型,那麼資料型別就不匹配了,如果我們進行了輸入檢測
if(std::cin>>i)
,那麼判斷條件將會為假。
我們將輸入裝置都看作「檔案」,包括我們熟悉的鍵盤。在
windows
下,標準輸入裝置的檔案結束符是乙個組合鍵:
ctrl+z
。只要我們輸入這樣乙個組合鍵,那麼
std::cin
也會使我們的檢測為假。
新設施:
std::vector
、std::sort
、std::max
、std::setprecision
當我們要儲存一批相同型別的資料的時候我們就可能會需要乙個容器,那麼
std::vector
就是標準庫為我們提供的這樣一種設施。它具備動態增長的特性,我們幾乎可以不用關心它是否能夠容下我們全部的資料。並且我們可以通過標準庫提供的
std::sort
對std::vector
中的資料進行排序,**簡潔明瞭:
std::sort(vec.begin(), vec.end());
。標準庫提供的std::max返回兩個資料中較大的乙個,而std::setprecision則是控制輸出流的精度。
新技術:
模板中的
typedef
標準庫提供的很多設施都是模板類或者模板函式,有些時候我們也要編寫我們自己的模板。然而模板是可以將型別作為引數的,這樣我們的模板引數就具有了型別不確定性。但是我們有些時候往往需要取得模板類的引數型別,那麼
typedef
就是乙個很好的技術。例如:
template
t>
class
container;
typedef
container
intcontainer;
我們定義了乙個將作為容器的模板類,模板引數就是我們容器能夠容納的元素型別。當我們需要知道某個容器的元素型別的時候,我們只需要使用
intcontainer::element_type
得到其元素型別。這裡intcontainer::element_typ等同於
int。
下一課:c++課堂第4章 組織程式和資料 希望我的課堂對大家學習c++有所幫助
(第3章)資料
c語言只有4種基本資料型別 整型,浮點型,指標,聚合型別 eg 陣列和結構等 其他的型別都是從這4種基本資料型別的某種組合派生而來的。1 整型 型別 最小範圍 其他char 0到127 signed char 127到127 unsigned char 0到255 short int 32767到3...
第3章 資料儲存
3.1 資料的型別 計算機的儲存硬體都有兩種狀態,開或關,可以對應數學中的二進位制,即0或1,所以計算機用二進位制來儲存資料。3.2 儲存數字 計算機儲存器被劃分為許多位數一定的儲存單元,乙個儲存單元能表示一定範圍的數字,先將數字轉化為二進位制,再以一定的方法儲存在記憶體中,這些方法有 表示整數的無...
第3章 處理資料
基本型別 整數 浮點數 提供多種變體 typedef short int wchar t wchar t 實際上的空間是和 short int 一樣 typedef 為乙個已有的型別取乙個新的名字 typedef int feet feet是int的了另乙個名稱 下面的宣告是完全合法的,它建立了乙個...