i/o流
「流」是乙個位元組序列,指外部裝置和計算機記憶體之間流動的一系列位元組,裝置可以是控制台視窗、檔案等。輸入(讀)時,位元組從輸入裝置流向記憶體;輸出(寫)時,位元組從記憶體流向輸出裝置。
i/o類
序號標頭檔案
型別說明
1iostream
istream
通用輸入流類,從流讀取資料;其他輸入流的基類。
2iostream
ostream
通用輸出流類,向流寫入資料;其他輸出流的基類。
3iostream
iostream
讀寫流4
fstream
ifstream
輸入檔案流類;從檔案讀取資料
5fstream
ofstream
輸出檔案流類;向檔案寫入資料
6fstream
fstream
讀寫檔案
7sstream
istringstream
從string讀取資料
8sstream
ostringstream
向string寫入資料
9sstream
stringstream
讀寫string
預定義的i/o物件
c++ 預定義了4個i/o物件,定義在命名空間 std 中。
①.cin:istream 類物件,從標準輸入裝置讀取資料;
②.cout:ostream 類物件,向標準輸出裝置寫入資料;
③.cerr:ostream 類物件,向標準輸出裝置寫入錯誤資訊;
④.clog:ostream 類物件,向標準輸出裝置寫入日誌資訊;
流運算子
①.<< :輸出運算子,左側必須是乙個 ostream 物件,右側是要列印的值,返回左側物件;
②.>> :輸入運算子,作側必須是乙個 istream 物件,右側是要賦值的變數,返回左側物件;
i/o物件的使用
①.不可以對i/o物件進行拷貝,因此不能將形參、返回值型別設定為流型別;
②.進行i/o操作的函式通常以引用的方式傳遞或者返回流;
③.讀寫乙個i/o物件會改變其物件,因此傳遞和返回的引用不可以是 const 的
判斷流是否有效
可以直接將乙個流物件當作乙個條件使用:
while (cin >> word)
輸出緩衝區
每個輸出流都管理乙個緩衝區,用來儲存程式讀寫的資料。緩衝區重新整理,即資料真正寫到輸出裝置和檔案:
①.程式正常結束時,緩衝區被重新整理;
②.緩衝區已滿,緩衝區重新整理後才能寫入新資料;
③.endl:輸出乙個換行,然後重新整理緩衝區;flush:重新整理緩衝區,不附加任何字元;ends:輸出乙個空字元,然後重新整理緩衝區
標準庫將cin和cout關聯在一起,因此從輸入流讀取資料會先重新整理關聯的輸出流。
檔案的概念
檔案是在計算機記憶體中以二進位制表示的資料在外部儲存介質上的另一種存放形式,可以使資料得以長期儲存。
fstream
fstream 繼承自 iostream ,可以像操作 cin 和cout 物件一樣來操作 fstream ,同時 fstream 也增加了一些新的操作。
檔案操作的一般步驟
對檔案的操作一般包括以下步驟:
①.開啟檔案用於讀或者寫;
②.檢查檔案是否開啟成功;
③.讀或者寫操作
④.檢查是否讀完
⑤.使用完檔案後要關閉檔案
向檔案中寫資料
①.開啟寫檔案
//方法1:
ofstream out;//建立檔案輸出流物件,未關聯檔案
out.open("data.txt");//開啟指定檔案,使 out 物件和檔案關聯
//方法2:
ofstream out("data.txt");//構造乙個 ofstream 物件,並開啟指定檔案
②.判斷是否開啟成功
ofstream out("data.txt");
if( out )
②.向檔案寫資料
ofstream out("data.txt");
if( out )
③.關閉檔案
ofstream out("data.txt");
if( out )
out.close();//關閉檔案
只有進行 close操作後,才可以繼續開啟新的檔案。
從檔案中讀資料
①.開啟讀檔案
//方法1:
ifstream in;//建立檔案輸入流物件,未關聯檔案
in.open("data.txt");//開啟指定檔案,使 in 物件和檔案關聯
//方法2:
ifstream in("data.txt");//構造乙個 ifstream 物件,並開啟指定檔案
②.檢測檔案尾
ifstream in("data.txt");
if( in )
}in.close();//關閉檔案
檔案開啟模式
①.檔案模式
序號檔案模式說明1
in以讀方式開啟
2out
以寫方式開啟
3每次寫操作前均定位到檔案末尾
4ate
開啟檔案後立即定位到檔案末尾
5trunc
截斷檔案
6binary
以二進位制方式進行io
以 out 模式開啟檔案會丟棄已有資料,使用多個開啟模式用"|"分隔。
②.預設模式
ifstream:預設以 in 模式開啟;
ofstream:預設以 out 模式開啟;
fstream:預設以 in 和 out 模式開啟;
概述sstream 標頭檔案定義了三個型別來支援記憶體 io,這些型別可以向 string 寫入資料,從 string 讀取資料,就像 string 是乙個 io 流一樣。
sstream特有操作
sstream strm; // strm是乙個未繫結的stringstream物件
sstream strm(s); // strm是乙個sstream物件,儲存s的乙個拷貝
strm.str(); // 返回strm所儲存的string的拷貝
strm.str(s); // 將string s拷貝到strm中,返回void
讀取 string
istringstream 讀字串時遇見空格算乙個字串,就可以讀乙個句子的單詞。
string s = "hello world";
istringstream is(s);// s 關聯到 流
string temp;
while( !is.eof())//非到末尾
向 string 寫資料
ostringstream 流裡面可以儲存字串的拷貝,在需要時再一次性輸出。
string st = "asdasdasdasd";
string st1;
ostringstream os;
os << " " << st<< endl; //都寫到了流裡面
os << " " << st << endl;
cout << os.str() << endl; //輸出字串流裡面儲存的字串,返回字串的拷貝
os.str(""); //使用前清空
os.str(st);
cout << os.str() << endl; //輸出字串流裡面儲存的字串,返回字串的拷貝
C IO庫學習篇
io庫型別和標頭檔案 頭檔案型別 iostream istream 從流中讀取資料 ostream 向流寫入資料 iostream 讀寫流 fstream ifstream 從檔案中讀取資料 ofstream 檔案寫入資料 fstream 讀寫檔案 sstream istringstream 從st...
C IO操作總結
c 語言本身並不提供輸入輸出的功能,輸入輸出功能由io庫提供,io庫屬於c 標準庫的乙個子集,需要掌握的知識點並不是很多,所以也並不是很難掌握,這裡只是個人學習的一點總結,方便以後隨時複習一下,免得忘記。c 中io操作主要的流操作物件有三個,控制台輸入輸出流 檔案輸入輸出流 還有記憶體輸入輸出流,下...
c io庫條件狀態
badbit 用來指出流已經崩潰,屬於系統級錯誤,如不可恢復的讀寫錯誤。failbit 表示乙個io操作失敗了,比如讀取數字卻讀取的是字元,這是可以恢復的 eofbit 用來表示檔案達到檔案結尾,這也是可以恢復的 goodbit 表示流的狀態正常 注意的是,一但流發生錯誤,其上後續的io操作都會失敗...