重要的輸入流類:
- istream類最適合用於順序文本模式輸入,cin是其實例
- ifstream類支持磁盤文件輸入
- istringstream
構造輸入流對象:
- 如果在構造函數中指定一個文件名,在構造該對象時該文件便自動打開
ifstream myFile("filename");
- 在調用默認構造函數之後使用open函數來打開文件
ifstream myFile;//建立一個文件流對象
myFile.open("filename"); //打開文件“filename”
- 打開文件時可以指定模式
ifstream myFile("filename",ios_base::in|ios_base::binary);
輸入流相關函數:
- open函數把該流與一個特定的磁盤文件相關聯
- get函數的功能與提取運算符(>>)很相像,主要的不同點是get函數在讀入數據時包括空白字符
- getline的功能是從輸入流中讀取多個字符,並且允許指定輸入終止字符,讀取完成後,從讀取的內容中刪除終止字符
- read成員函數從一個文件讀字節到一個指定的內存區域,由長度參數確定要讀的字節數。當遇到文件結束或者在文本模式文件中遇到文件結束標記字符時結束讀取。
- seekg函數用來設置文件輸入流中讀取數據位置的指針
- tellg函數返回當前文件讀指針的位置
- close函數關閉與一個文件輸入流關聯的磁盤文件
輸入流應用舉例:
/*輸入字符串,直到遇到t時停止*/
#include<iostream>
#include<string>
using namespace std;
int main()
{
string line;
cout << "Type a line terminated by 't'" << endl;
getline(cin, line, 't');
cout << line << endl;
system("pause");
return 0;
}
字符串輸入流:
- 用於從字符串讀取數據
- 在構造函數中設置要讀取的字符串
- 功能:支持ifstream類的除open、close外的所有操作
- 典型應用:將字符串轉換爲數值
輸入輸出流:
兩個重要的輸入/輸出流:
- 一個iostream對象可以是數據的源或目的
- 兩個重要的I/O流類都是從iostream派生的,它們是fstream和stringstream,這些類繼承了前面描述的istream和ostream類的功能。
fstream類:
- fstream類支持磁盤文件輸入和輸出
- 如果需要在同一程序中從一個特定磁盤文件讀並寫到該磁盤文件,可以構造一個fstream對象
- 一個fstream對象是有兩個邏輯自流的單個流,兩個子流一個用於輸入,一個用於輸出
stringstream類:
- stringstream類支持面向字符串的輸入與輸出,可以用於對同一個字符串的內容交替讀寫,同樣是由兩個邏輯子流構成。