【STL】C++標準輸入輸出流

輸入和輸出相對於程序而說的。
鍵盤輸入數據到程序:標準輸入 input;
程序數據輸出到顯示器:標準輸出 output。
標準輸入+標準輸出=標準I/O;
文件的輸入和輸出叫文件I/O;
cout: 全局流對象,輸出數據到顯示器(輸出緩衝區);
cin: 從緩衝區讀取數據(輸入緩衝區)
cerr: 標準錯誤 輸出數據到顯示器;
clog: 標準日誌 輸出數據到顯示器;
cerr沒有緩衝區,clog有緩衝區。

Cout<<”hello world”<<endl;
Cout 把hello world放進輸出緩衝區,但是並不會輸出顯示。Endl首先進行一次換行,然後對緩衝區進行刷新,使數據輸出顯示。

(1)標準輸入流對象cin,重點掌握的函數:
Cin.get() //一次只能讀取一個字符
Cin.get(一個參數)//讀取一個字符
Cin.get(兩個參數)//可以讀取字符串
Cin.ignore()//忽略當前的字符 括號裏面加幾就是幾個字符,無參數默認爲1。舉例
Cin.peek()//偷窺一下緩衝區,返回第一個字符,並不像get一樣是將其取走。
Cin.putback()和cin.get()配合使用:cin.get()將緩衝區的數據拿走,cin.putback()將get拿走的數據再放回去。
////////////////////////////////////////////////////////////////////////////
Char ch;
Cin.get(ch);
Cin.ignore();
當輸入abcd時,輸出:a c;
首先a進入緩衝區,那麼當前字符就是b,然後c 進入緩衝區,當前字符是d———因此輸出爲a c.
//////////////////////////////////////////////////////////////////////////////
Char ch2;
Cin.get(ch2);//讀取一個字符
Char buf[256]={0};
Cin.get(buf,256);//從緩衝區讀取一個字符串
Cin.getline(buf,256);//讀取一行數據,不讀換行符
//////////////////////////////////////////////////////////////////////////////////

(2)C++標準輸出流:


```cpp
#include<iostream>
#include<iomanip>
using namespace std;
/*
cout.flush()//刷新緩衝區
cout.put()//向緩衝區寫字符
cout.write()//二進制流的輸出
cout.width()//輸出格式控制
cout.fill()
cout.setf(標記)

*/
void test() {
//一 成員方法的方式
	/////////////////////////只寫cout只會將數據放入緩衝區,並不會刷新輸出,當加入cout.flush()就會輸出。////
	///注:在VS的不同版本可能不加endl和cout.flush依然會有輸出。
	cout << "hello world";
	cout.flush();
	////////////////////////cout.put向緩衝區中寫字符,支持鏈式輸入///////////////////////////////////////
	cout << endl;
	cout.put('h').put('e').put('l').put('l').put('o') << endl;
	///////////////////cout.write()寫字符串///////
	cout.write("hello zhaosi!",strlen("hello zhaosi!"))<<endl;

//重要///////////////**************cout.width()//輸出格式控制**********************/////////////////
	int number = 10;
	cout << number << endl;
	cout.unsetf(ios::dec);//卸載當前默認的十進制輸出方式
	cout.setf(ios::oct);//將當前輸出改爲八進制輸出方式
	cout << number << endl;
	cout.setf(ios::showbase);//將八進制的0顯現出來
	cout << number << endl;

////////////////////cout.width()//輸出格式控制//////////
	cout.width(10);//設置位寬
	cout.fill('*');//空格處用*代替
	cout.setf(ios::left);//格式左對齊
	cout << number << endl;
/*************************************************************************************************/
//二 通過控制符
	int number2 = 10;
	cout << hex
		<< setiosflags(ios::showbase)
		<< setw(10)
		<< setfill('~')
		<<setiosflags(ios::left )
		<< number2
		<< endl;




}
int main(void) {
	test();
	return 0;

}
![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20191029195531368.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTc0Nzg5Mw==,size_16,color_FFFFFF,t_70)
發佈了45 篇原創文章 · 獲贊 25 · 訪問量 3055
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章