C++從入門到工作 第二節(20180708)

1.a += 5;//a = a + 5;
其他的計算相近,這裏有的人說區分不開放在前面和放在後面的意義,其實這個單純地看做一個符號是最好的。和+無關,和=無關,和兩者的組合有關。

2.判斷語句if

if (word) {
    std::cout << "It is a word.\n";
} else {
    std::cout << "It isn't a word.\n";
}

如果僅爲一條結果語句也可以省略花括號

if (word) std::cout << "It is a word.\n"

但是不推薦這樣進行處理,因爲這樣會造成後期代碼檢錯和代碼修改的不便。

3.三元操作符

w = ( (word % 2) == 0) ? 'Y' : 'N';//偶數Y,奇數N

這裏把值賦給了w,這裏也可以直接輸出

std::cout << ( (word % 2) == 0) ? 'Y' : 'N';

這裏需要注意的是 == 和 = 的區別。

4.判斷語句,switch

switch (year) {
    case 1995std::cout << "It's not.\n"
    break;
    case 1996std::cout << "It's not.\n"  
    break;
    case 1997std::cout << "It's not.\n"
    break;
    case 1998std::cout << "It's.\n"
    break;
}

注意,這裏的break是直接跳出該循環。
switch的限制是:它只能使用整數和char數據類型。

5.++,–

int a = 5a++; // 6

6.sizeof返回變量或者變量類型在該系統中的內存佔用空間

std::cout << "Size of  float" << sizeof(float) << " byte(s).\n";
float w = 0.3;
std::cout << "Size of  w" << sizeof w << " byte(s).\n";

7.while只用當條件滿足時才停止。

while (multiplier <= num) {
    sum *= multiplier;
    ++multiplier;
}

8.do while和while的區別在於,前者至少會執行一次循環體,後者可以一次都不執行。

9.我們存儲的數據能無限存儲麼?不能
我們在定義變量時都會提前聲明類型,也就是給分配內存,8位二進制,16位二進制,64位二進制等等。
比如分配的空間範圍爲0~65535,那麼65535+1=0,0-2=65534

10.for (聲明變量賦值變量;判斷是否滿足條件;在判斷之前執行該項一次)

for (int i =5, int j =8; (i+j) <= w; ++i,++j) {
    sum *= (i+j);
}

11.switch不區分大小寫的分支(因爲用戶輸入大小寫都是有可能的)

case 'Y':
case 'y':
    std::cout << "OK!";
    break;

12.輸入cin,輸出cout都是來自於iostream
因此需要在前面加上引入iostream

13.在switch的情況沒有滿足的case,那麼定義一個default作爲switch的結尾。

default:
    std::cout << "nothing!\n";
    break;
}

14.當用戶輸入數據時不會被一邊輸入一邊寫入,只會在回車鍵按下後,一次性發送到C++程序中。
在多項輸入時,緩衝區的數據會對其他項造成影響。

std::cin::ignore(5);

這裏是丟棄緩衝區的5個字符。

std::cin::ignore(10, '\n');

這裏是丟棄10個字符或者直到遇到另一個換行符。

std::cin::ignore(std::cin.gcount()+1);

刪除整個緩衝區

15.一次輸入兩個字符串,中間使用空格分開的

std::cin >> name >> number;

16.讀入一整行文本

std::string input;
std::cout << "Input something: ";
std::getline(std::cin, input);

直到換行符出現,輸入結束。

17.cin輸入的問題:

1.無法把一個值賦值給一個變量,程序仍然繼續執行。鍵盤輸入數據與獲得的變量不匹配,程序給出一個錯誤的結果;
2.cin接收到數據才能執行,只是一直按回車鍵,程序將一直等在那裏。
if (std::cin.eof()) //到達文件末尾,返回true;
if (std::cin.fail()) //cin無法工作,返回true;
if (std::cin.bad()) //遇到較爲嚴重的原因,無法工作,返回true;
if (std::cin.good()) //上面情況沒發生,返回true;

18.當用戶輸入錯誤時,需要程序刪除一些緩衝數據,重新等待用戶鍵入。

int age;
std::cout << "Enter your age: ";
while (!(std::cin >> age)) {
    std::cin.clear();
    std::cin.ignore(100, '\n');
    std::cout << "Enter your age: ";
}

增加輸入的提示信息

std::cout << "Enter a number: [##.#] ";

19.字符串轉換爲數值類型

strtol(); //字符串——長整數
strtod(); //字符串——double浮點數
strtold(): //字符串——long double浮點數

20.數據輸出到文件——fstream庫

#include <fstream>
std::ofstream fileOutput("filename"); //將fileOutput與文件進行關聯。

filname的文件格式:

絕對路徑:D:\\mylife\\filename.ext或/mylife/filename.ext;
相對路徑:../filename.ext或mylife\\filename.ext;

文件調用時不需要原文件存在,可以直接生成。

fileOutput.close();//關閉文件流
std::ofstream fileOutput("name.txt", std::ios::app); //std::ios::app的app爲append,意思爲追加。程序打開文件,然後在現有文件中增加更多的數據。
if (fileOutput.is_open()) {
fileOutput << name << "|" << age << "\n"; //向程序寫入名字|年齡
fileOutput.close();
}

在文件打開時,可以先創建ofstream類型的變量,在調用open()函數

std::ofstream fileOutput;
fileOutput.open("/mylife/filename.ext");
ios::nocreate; //如果不存在,就不創建
ios::noreplace; //如果存在,不要打開
fileOutput("name.txt",(std::ios:;app) | (std::ios::nocreate)); //同時使用多個標誌

21.

../ 代表當前目錄的父目錄;
./ 代表當前目錄。

22.

std::string line;
while (std::getline(flieInput, line, '|') ) {
} //getline()會一直讀到"|"(默認爲:換行符),存入line
std::string entireFile, line;
while (std::getline(flieInput, line) ) {
    entireFile += line; //文件全部讀入大字符串
}

23.定義自己的函數

void max(); //void定義函數沒有返回值
int max(); //定義一個簡單的類型,這裏的空白()表示沒有輸入

函數原型定義在main()之前

#include statements
void max();
int main() {
}
void max() {
}

24.創建帶輸入參數的函數

void max (int num, int power); //每個參數都要聲明
void max (int num, int power = 5); //可以直接賦值,但是賦值項必須在可選參數之前
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章