輸入輸出迭代子
可以將標準輸入對象cin組裝成輸入流迭代子(istream_iterator),也可以將標準輸出對象組裝成輸出流迭代子(ostream_iterator),
以此來完成輸入輸出的操作。
輸入流迭代器:
定義方法:istream_iterator<要從流中讀取的數據類型> 迭代器名(綁定的流); //可以先不綁定流
例如:std::istream_iterator<int> inputInt(cin);
輸出流迭代器:
定義方法:ostream_iterator<要從流中讀取的數據類型> 迭代器名(綁定的流,元素分隔符); //輸出流迭代器必須綁定流!
例如:std::ostream_iterator<int> outputInt(cout , "\n"); // 綁定流對象cout,元素之間分隔符爲換行 ,有點類似於java中的printfln(),
實現了自動換行。
也可以這樣定義:std::ostream_iterator<int> outputInt(cout); 元素分隔符不是必須的,但是這樣就不能自動換行了
下面是一個使用的例子:
#include <iostream> using namespace std; #include <iterator> int main() { cout<<"Enter two integers: "; //創建一個輸入流迭代器 std::istream_iterator<int> inputInt(cin); int num1 = *inputInt; //從輸入流中讀取一個整數 ++inputInt; //移動迭代器指向下一個整數 int num2 = *inputInt; //從輸入流中讀取下一個整數 cout<<"The sum si: "; //創建一個輸出流迭代器 std::ostream_iterator<int> outputInt(cout,"\n"); *outputInt = num1 + num2; return 0; }
使用時要注意的幾點:1.要使用istream_iterator對象和ostream_iterator對象,必須包含頭文件iterator;
2.組裝後的輸入輸出流迭代器只能讀取指定數據類型的數據,否則就會拋出異常;
3.可以通過*操作符讀取標準輸入流中的內容,因爲istream_iterator模板對*操作符進行了重載;
4.通過++運算符可以將迭代器移動到下一個輸入數據處。