在別人代碼里,經常看到std命名空間,比如使用std命名空間里的標準輸入輸出流對象cout: 其中cout相當於控制台輸出(console out),然後通過<<左移操作符,將每個字元列印出來. endl相當於就是'\n'換行. 接下來我們便通過上章學習的操作符重載,來實現上面功能 上面的操作符重載 ...
在別人代碼里,經常看到std命名空間,比如使用std命名空間里的標準輸入輸出流對象cout:
#include<iostream> using namespace std; int main() { cout << "Hello world" << endl; return 0; }
其中cout相當於控制台輸出(console out),然後通過<<左移操作符,將每個字元列印出來.
endl相當於就是'\n'換行.
接下來我們便通過上章學習的操作符重載,來實現上面功能
#include "stdio.h"
const char endl='\n'; class Console{ public: Console& operator <<(const char* str) { printf("%s",str); return *this; } Console& operator <<(char c) { printf("%c",c); return *this; } }; Console cout; int main() { cout<<"Hello world"<<endl; return 0; }
上面的操作符重載(<<),為什麼返回值是return *this?
因為,我們需要連續使用<<,比如:
cout<<"Hello word"<<endl; //等價於: (cout<<"Hello word")<<endl;
運行(cout<<"Hello word")後,便會將cout對象return出來,然後繼續調用cout<<endl.
通過cout後,便無需再寫輸出格式了,不會像printf()那麼麻煩了.
而前輩們已經將cout,cin這些開發成C++標準庫了,我們直接調用就好了.
C++標準庫描述
- C++標準庫是由類庫 和函數庫 組成的集合, 不是C++語言的一部分
- C++標準庫中定義的類和對象,都位於std命名空間中
- C++標準庫的頭文件都不帶.h尾碼,比如: #include<iostream>
- C++標準庫涵蓋了C庫的功能
C++標準庫里還實現了多數常用的數據結構以及類似C語言的庫,比如:
上面的<cstdio>,是將以前C語言的stdio.h包含的內容都被定義在命名空間std中.
而以前的stdio.h的內容是被定義在全局命名空間中的.
所以使用C++標準庫時,需要使用using namespace std; 來聲明使用std命令空間.
接下來下章,來學習C++標準庫-string類