我的隨行筆記4 C++ Primer Plus

qwer1030274531發表於2020-08-27

1、strcmp( ):比較兩個字串,相同返回0;第一個字串按字母順序排在第二個字母之後將返回負值;


2.型別別名:


#define BYTE char  //使用前處理器,用char替代所有的BYTE,BYTE是char的別名


typedef char byte  //使用關鍵字typedef ,byte是char的別名。typedef不會建立新型別


3. C++11中基於範圍的for迴圈,對陣列(或vector,array)的每個元素執行相同的操作:


double prices[5]= {4.99,5.6,2.13,2.69,7.34};


for (double x : prices)   {cout<<x<<std::end;}


for (double &y : prices)   { y=y*0.8;  } // 要修改陣列元素時,迴圈變數要取地址,改為&y


4、cin() 忽略空格和換行符,cin.get()中包含空格、製表符、換行符。


  cin.get(name,size).get();


5、檢測檔案尾(EOF) :檢測到EOF,cin.eof() 或cin.fail() 將返回bool值true,否則返回bool值 false; 


6.字元輸入做法:


char ch; cin.get(ch);  while (cin.fail()==false) { ....  cin.get(ch); }  //或者while (!cin.fail()) 或while (cin) 


char ch;  while (cin.get(ch))  { ... }


int ch; ch=cin.get();  while ( ch!=EOF )  { ...  ch=cin.get(); } 


int ch;   while((ch = cin.get() ) != EOF) {     } 




更常用,拼接字串:cin.get(ch1).get(ch2);


7.邏輯運算子||  邏輯運算子&&


!的優先順序大於邏輯運算子和關係運算子(> < =), &&優先順序大於|| ,關係運算子優先順序大於 &&,||


8.定義二維字串陣列方式:


(1)char指標陣列: char * cities[3]={"Beijing", "TianJin", "ShangHai"};


(2)char陣列的陣列 char  cities[3][10]={"Beijing", "TianJin", "ShangHai"};


(3)string物件陣列 string  cities[3]={"Beijing", "TianJin", "ShangHai"};


希望字串可以修改的情況下,string類可以自動調節大小更方便。


9.switch語句,while語句中,將int值與列舉量標籤進行比較時,列舉量將提升為int。


switch語句中每一個case的標籤必須是int或char,還必須是常量


10.continue :跳出迴圈剩餘部分,執行新的一輪迴圈


     break :跳出迴圈剩餘部分,不在執行迴圈語句


switch一般與break組合使用


int chice[3]={0,1,2};


switch (choice){case 0: ... break;  case 1: ... break; case 2: ... break;  }


11.int n[6];  for(i=0;i<6;i++){


 cout<<"round "<<i+1<<" : ";


while(!(cin>>n[i])){   //當輸入不是字元時,執行下面迴圈


cin.clear(); // 如果輸入的是字元,不是數字時,應利用cin.clear() 重置cin以接受新的輸入。


while (cin.get() != '\n')   continue;  //while中用cin.get() 讀取行尾之前的輸入,從而刪除這行錯誤輸入


cout<<"Pleae enter a number:  ";


}  }


12.寫入文字檔案檔案輸出:必須包含標頭檔案 #include<fstream>,需要宣告一個或多個ofstream物件,將ofstream物件與檔案關聯用open()方法。使用完檔案用close()關閉。可以使用ofstream物件和運算子<<來輸出各種型別的資料。(和cout類似)


   


#include "stdafx.h"

#include<iostream>

#include<fstream>

 

int _tmain()

using namespace std;

char automobile[50];

int year;

double a_price,d_price;

 

ofstream outfile; //建立一個輸出的ofstream物件,可以像使用cout一樣使用outfile

outfile.open("carinfo.txt"); //關聯的檔案,建立一個名為carinfo.txt的檔案

cout << "Enter the make and model of automobile: ";

cin.getline(automobile, 50);

cout << "Enter the model year: ";

cin >> year;

cout << "Enter the original asking price: ";

cin >> a_price;

d_price = 0.913*a_price;

cout << fixed;

cout.precision(2);  //設定顯示精確度為2位並返回上一次的設定。

cout.setf(ios_base::showpoint); //顯示浮點數小數點後的0;

cout << "Make and Model: " << automobile << endl;

cout << "Year: " << year << endl;

cout << "Was asking $" << a_price << endl;

cout << "Now asking $" << d_price << endl;

 

outfile << fixed;  //可以像使用cout一樣使用outfile

outfile.precision(4);  設定輸出精確度為4位並返回上一次的設定。

outfile.setf(ios_base::showpoint);  

outfile << "Make and Model: " << automobile << endl;

outfile << "Year: " << year << endl;

outfile << "Was asking $" << a_price << endl;

outfile << "Now asking $" << d_price << endl;

 

outfile.close();  //關閉檔案

return 0;

}

13.讀取文字檔案:必須包含標頭檔案 #include<fstream>,需要宣告一個或多個ifstream物件,將ifstream物件與檔案關聯用open()方法。使用完檔案用close()關閉。可以使用ifstream物件和運算子>>來讀取各種型別的資料。


可以使用ifstream物件和get()方法來讀取一個字元。使用ifstream物件和getline()方法來讀取一行字元。


使用ifstream物件和eof() 、fail()等方法來判斷輸入是否成功


ifstream物件本身作為測試條件時,如果最後一個讀取操作成功,它將會被轉化為bool值true.(和cin類似)


檢查檔案是否被成功開啟用方法is_open();


#include "stdafx.h"

#include<iostream>

#include<fstream>

#include<cstdlib> //支援exit()

const int SIZE = 60;

 

int _tmain()

using namespace std;

char filename[SIZE];

ifstream infile;

cout << "Enter name of data file: ";

cin.getline(filename, SIZE);  //輸入要讀取的檔名

infile.open(filename);

if (!infile.is_open()) //檢查檔案是否被成功開啟

{

cout << "Could not open the file" << endl;

cout << "Program terminating.\n";

exit(EXIT_FAILURE);

}

double value;

double sum = 0.0;

int count = 0;

infile >> value; //在迴圈外讀取第一個值

while (infile.good()) //讀取輸入操作成功且未到達EOF

{

++count;

sum += value;

infile >> value;  //讀取下一個值

}

if (infile.eof()) //判讀是否達到EOF

cout << "End of file read.\n";

else if (infile.fail()) //可以檢測EOF或型別不匹配

cout << "Input terminated by data mismatch.\n";

else

cout << "Input terminated by unkonwn reason.\n";

if (count == 0)

cout << "No data processed.\n";

else

{

cout << "Item read: " << count << endl;

cout << "Sum: " << sum << endl;

cout << "Average: " << sum / count << endl;

}

infile.close();

return 0;

}

infile >> value; //在迴圈外需進行一次讀取

    while (infile.good()) //

    {  .......

          infile >> value;  //讀取下一個值

    } 


以上這一部分等效於


while (infile>>value)  //讀取並測試是否成功


{ ...... } 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30239065/viewspace-2715136/,如需轉載,請註明出處,否則將追究法律責任。

相關文章