輸入格式
一、cin>>a;
- 最基本的格式,適用於各類類型。會過濾掉不可見字符例如空格,TAB,回車等
二、cin>>noskipws>>ch[i];
三、cin.get(ch); 或 ch = cin.get();
四、cin.getline(s,k);
- 接收一行中k個字符,能夠接收空格
- cin.getline()實際有三個參數,cin.getline(字符串,接收個數,結束字符);
- 當第三個參數省略時,系統默認爲'\0';
五、getline(cin,s);
- 和cin.getline()相似,讀入一行字符串,值得注意的是cin.getline()屬於istream流,而getline()屬於string流,兩者並不相同。
輸出格式
一、cout << a;
二、cout << setprecision(k) << a;
- 設置位數,和printf中的%6d此格式相似;
- 如果想要設置小數點後位數,則用cout << fixed << setprecision(k) << a; 控制小數點後位數
三、cout << setfill(ch) << setw(k) << a;
- 設置長度以及填充字符,例如cout << setfill('0') << setw(3) << 1;輸出001.
四、cout << hex << setiosflags(ios::uppercase) << a; 或 cout << hex << uppercase << a;
- hex控制輸出的格式,默認爲dec(十進制),可手動設置dec,hex,oct。
- setiosflags爲控制格式,ios::uppercase 爲輸出大寫十六進制格式,也能夠省略setiosflags直接寫uppercase.一共有7種格式
- setiosflags(ios::fixed) --- 固定的浮點顯示
- setiosflags(ios::scientific) --- 指數表示
- setiosflags(ios::left) ---左對齊
- setiosflags(ios::right) ---右對齊
- setiosflags(ios::skipws) --- 忽略前導空白
- setiosflags(ios::uppercase) --- 16進制數大寫輸出
- setiosflags(ios::lowercase) ---16進制數小寫輸出
五、endl
這也是cout中很重要的一個東西,不單單只是提供一個換行,endl還會刷新緩衝區。緩存
cout會對輸出內容進行緩衝,因此輸出的內容並不會當即輸出到顯示器而是被存儲在緩衝區中。spa
一下三種狀況會進行輸出:刷新緩衝區,緩衝區滿時,關閉文件。code
而endl就是刷新緩存區,強制進行輸出,如果想觀察不刷新緩衝區的狀況能夠加一行#define endl "\n",將endl用換行符代替,觀察輸出狀況。對象
- PS:值得注意的是只有setw的設置只有當次輸出有用,下一個cout就會失效,而其餘全部控制格式會永久生效。
StringStream
這個東西單獨講,比較重要,包含在sstream庫中。
blog
istringstream類用於執行C++風格的串流的輸入操做。
ostringstream類用於執行C風格的串流的輸出操做。
stringstream類同時能夠支持C風格的串流的輸入輸出操做。ip
而後stringstream的做用就是從string對象讀取字符或字符串。ci
1 string s = "ABCD";
2 stringstream ss(s);
3 char ch;
4 while(ss>>ch){
5 cout << ch << " ";
6 }
7
8 //運行結果
9 //A B C D
又例如字符串
1 string s = "hello world";
2 stringstream ss(s);
3 string str;
4 while(ss>>str){
5 cout << str << " ";
6 }
7
8 //運行結果
9 //hello world
在某些題目須要處理字符串時,這些題目每每是輸入的一行中包含多個字符以及空格,這個時候就能夠利用 stringstream進行單個字符或者單個字符串分析處理了。get
仍是那句話,其實啥都不是很難,多敲代碼,多運用就熟悉了 =7=