1.3 數據處理

1. const限定符與#define.  例如const int MONTHS=12將常量MONTHS初始化爲12, 其值就被固定了, 編譯器將不允許再修改該常量的值. 容易知使用#define MONTHS 12也能達到同樣的效果, 但const比#define要好一些. 首先, const能夠明確常量的數據類型; 其次, 可以通過C++的作用域規則將常量限定在特定的函數或者文件中; 第三, 可以將const用於更復雜的類型, 如數組和結構, 而#define卻不能這樣使用.

2. 類型轉換. 將0賦給bool變量時, 0將被轉換爲false; 而非零值將被轉換成true.

3. 字符串. 字符串有一天特殊的性質: 以空字符/0結尾, 必須最用用一個長度來存儲空字符. 例如char a[10], 最多隻能存9個用到的字符, 最用一個空間要用來存空字符. 另一種方法來初始化字符串, 可讓編譯器自動添加結尾的空字符. 例如char a[10]="hello", 那麼a[0]~a[4]分別爲h,e,l,l,o; a[5]~a[9]全部爲空字符/0. 我們要防止出現分配空間不夠的情況, 比如說char b[5]="hello", 沒有用來存儲空字符的空間, 所以這個語句是非法的, 空間不夠. 另外字符串常量和字符常不是同一個概念, 字符串常量用雙引號表示一個字符, 字符常量用單引號, 表示字符的ASCII碼. char a="S" 這個語句是非法的, char a='S' 這個語句是合法的.

4. 拼接字符串. cout<<"I Love "<<"You!" 第一個字符中結尾的空字符被第二個字符的第一個字符取代.

5. 輸入字符串. char name[10]; cin>>name; 那麼最多輸入9個字符作爲name.

6. 面向行的輸入, getline讀取指定數目的字符或遇到換行符時停止讀取, 並丟棄換行符. 例如讀取將姓名讀入到一個包含20個元素的name數組中, 那麼函數最多讀取19個字符, 用法爲cin.getline(name,20). getline函數可以拼接起來使用cin.getline(name,20).getline(name2,20).

7. 面向行的輸入, get與用法與getline類似, 但是get並不丟棄換行符, 而是將其留在輸入隊列中, 如果兩次連續調用get(), 例如cin.get(name,20); cin.get(name2,20); 由於第一次調用後, 換行符將留在輸入隊列中, 因此第二次調用時看大的第一個字符便是換行符, 此時get()認爲已經達到行尾而終止讀入. get()有另一種變體, 使用不帶任何參數的cin.get()調用可讀取下一個字符(即便是換行符), 可用它來處理換行符. 則可以這樣處理cin.get(name,20); cin.get(); cin.get(name2,20); 當然也可以使用兩個類成員函數(類cin的成員函數)拼接起來使用, 例如cin.get(name,20).get(); cin.get(name2,20);

8. string類, 需要包含#include<string>, string對象和字符數組之間的主要區別是, 可以將string對象聲明爲簡單變量, 而不是數組. 例如string str1; 創建一個空的string對象, string str2="father"; 創建一個字符串實體. string對象可以合併, 賦值. 例如string str1, str2, str3; str1="hello"; str2="world"; str3=str1+str2="helloworld";

9. string類的其他操作, 確定字符串長度. 已知string對象str1, 則str1的長度可以通過string類的方法size()確定, 那麼str1.size()表示str1的長度. 對於字符串數組, 我們可以通過strlen函數確定, 例如對於字符串name1[20], 那麼他內部實際長度(即除去空字符)爲strlen(name1). 當然要使用strlen, 最好包含頭文件#include<string.h>或者#include<cstring>.

10. C++結構體. 類似於C語言的結構體, 但有一點不同, 在定義結構體後, 聲明結構體變量時C語言要求有struct關鍵字, 但是C++可以省略struct關鍵字. 例如定義結構體
      struct student
     {
          char name[20];
          int age;
      };
聲明的時候C語言要求爲struct student stu1; 而對於C++而言只需要student stu1就可以了, 這樣也貼近C++的面向對象思想, 就好想新創建了一個類一樣. 聲明結構體之後, 可以對結構體進行初始化和賦值, 例如 student stu1={"Liming", 20}; student stu2; 可以令stu2=stu1, 那麼stu2的內容和stu1的內容就一樣了.

11. 結構體數組. 創建了結構體後, 所創建的結構體就相當於一個類型了, 這個類型的一個集合就相當於一個這個類型的數組了. 例如還是上面創建的結構體student, 定義一個結構體數組student stu[100], 那麼久聲明瞭100個結構體變量了, 分別是stu[0]~stu[99]. 也可以初始化結構體數組, 例如
      student stu2[2]={
              {"Liming", 20},
              {"Xiaonei",30}
       };

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章