一、iostream(輸入輸出流)
i, o分別表示 istream
(輸入流) 和 ostream
(輸出流);stream表示 流
:隨著時間順序生成或消耗;合起來就是iostream(輸入輸出流)。
1.1、4個IO對象
- cin:標準輸入;
- cout:標準輸出;
- cerr:標準錯誤,通常用來輸出警告和錯誤信息給程序使用者;
- clog:常用于輸出程序執行時的一般信息;
(后兩個第一次知道,逃
1.2、例子
#include <iostream>
int main()
{
std::cout << "Enter two Numbers:" << std::endl;
int val1, val2;
std::cin>> val1 >> val2;
std::cout << "The sum of " << val1 << " and " << val2
<< " is " << val1+val2 << std::endl;
return 0;
}
- 第一行告訴編譯器要使用iostream庫;
- 輸出流(寫入到流):
- 輸出操作符
<<
將值寫入到流
,即輸出
。該操作符每次接受兩個操作數:左操作數必須是ostream對象;右操作數是要輸出的值; - C++中的每個表達式都會產生一個結果,就是說
std::cout<<a;
也會產生返回值,但輸出操作符<<
返回的是輸出流本身,所以可以將多個輸出連接在一起,形如std::cout<<a<<b;
;
- 輸出操作符
- 輸入流(讀入到流):跟輸出流類似;
-
std
表示使用命名空間 std中定義的的名字; -
endl
稱為操縱符(manipulator),將它寫入流
時,具有換行的效果,并同時會刷新相關聯的緩沖區(buffer)。通過刷新緩沖區,用戶可以立即看到寫入流
中的輸出;
二、控制結構
2.1、while語句和for語句
問題:求1到10(包括10)的和?
while語句:
#include <iostream>
int main()
{
int sum = 0, val = 1;
while (val <= 10){
sum += val;
++val;
}
std::cout << "The sum of 1 to 10 inclusive is " << sum << std::endl;
return 0;
}
- while語句的結構形式:
while (condition) while_body_statement;
。表示,通過測試condition
為真時執行while_body_statement
,重復這一過程直到condition
為假-
condition
是一個可求值得表達式。如果結果非零,那么為真;如果結果為為零,則為假; -
<=
表示小于等于操作符; -
sum += val;
等價于sum = sum + val;
。類似的,++val;
等價于val = val + 1;
;
-
還有另一種情形:只對輸入的值進行求和
#include <iostream>
int main()
{
int sum = 0, val;
while (std::cin >> val){//windows系統下輸入 ctrl+z 可以作為文件結束符(end-of-file)
sum += val;
}
std::cout << "The sum is " << sum << std::endl;
return 0;
}
for語句:
#include <iostream>
int main()
{
int sum = 0;
for (int val = 1; val <= 10; ++val){
sum += val;
}
std::cout << "The sum of 1 to 10 inclusive is " << sum << std::endl;
return 0;
}
- for語句可以簡化管理循環變量.不像在while語句中,需要
val
這樣的值來控制循環。其執行流程為:- 1,創建
val
并初始化為1 - 2,測試
val
是否小于或等于10 - 3,如果
val
小于或等于10,執行for循環體:把val
值加到sum
變量中;否則,執行for語句體之后的語句 - 4,
val
加1 - 5,重復第2~4步
- 1,創建
2.2、if語句
假設這樣一種情況:將用戶輸入的兩個數作為上、下界,然后用上面的循環求和。這個時候我們就需要判定那個數值更大而作為上界,另一個作為下界。
#include <iostream>
int main()
{
std::cout << "Enter two Numbers:" << std::endl;
int val1, val2;
std::cin>> val1 >> val2;
int lower, upper;
if (val1 <= val2) {
lower = val1;
upper = val2;
} else {
lower = val2;
upper = val1;
}
int sum = 0;
for (int val = lower; val <= upper; ++val){
sum += val;
}
std::cout << "The sum of "<< lower << " to "<< upper <<" inclusive is " << sum << std::endl;
return 0;
}
- 代碼就不用多說了,一眼就能看出來
三、類的簡介
假設有書店問題:某書店以文件形式保存每一筆交易。每筆交易形式如:0-201-70353-x 4 24.99
第一個元素是ISBN,第二個為銷售冊數,第三個為單價。店主定期查看這個文件,統計每本書的銷售冊數、總銷售額以及平均售價。
3.1、Sales_item類
-
Sales_item對象上的操作
- 加法
+
:將兩個對象相加; - 輸入
>>
: 讀取一個對象; - 輸出
<<
:輸出一個對象; - 賦值
=
:將一個對象賦給另一個對象; - 對比
?
:對比兩個對象是否屬于同一本書(函數same_isbn);
- 加法
-
初探成員函數
成員函數是由類定義的函數,也稱為類方法。如
item1.same_isbn(item2)
調用類Sales_item的成員函數same_isbn來對比item1
和item2
。
注:標準庫的頭文件用尖括號
<>
括起來,非標準庫用雙引號""
。
END.