English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

請問一下vc++高手,
std::istream_iterator inputInt(cin)
std::ostream_iterator outputInt(cout)
是什麼意思與意義,感謝喔

2007-01-26 17:43:09 · 2 個解答 · 發問者 聯合公園真棒 1 in 電腦與網際網路 程式設計

我大概知道是什麼意思摟,寫的比書本還詳細喔,感謝龍大師。我會把這些用成我的筆記的喔^^。
另外,我想請問一下喔,有沒有比較推薦的vc 的書籍阿,因為我在圖書館借的書中,好像對於STL之介紹比較淺顯且比較少,感謝喔。

2007-01-27 21:08:28 · update #1

那我請問一下喔,我可以用ostream_iterator做另存(寫入)另一個檔案中嗎?

2007-01-27 21:23:22 · update #2

原文書也可以阿,我接受阿,只要是寫的夠清楚的就好摟,感謝喔

2007-01-28 17:41:23 · update #3

龍大師你這樣說,我還是有點不懂喔,麻煩妳再說一次可以嗎??
感謝喔

2007-01-28 17:42:58 · update #4

龍大師,我這樣說好摟,我現在在寫一個作業程式:題目如下
利用istream_iterator讀取一連串整數。利用ostream_iterator將其中奇數與偶數分別寫至兩個不同檔案中,且每個數直接以空白字元相隔。

2007-01-28 18:12:14 · update #5

2 個解答

istream_iterator可以講是個輸入的方法.用這樣本型態時你要先表明輸入的型態是啥.

std::istream_iterator inputInt(cin);
這表示inputInt這個變數是個專門從cin裡讀取int的istream_iterator.你只能用inputInt來讀int.若在用inputInt讀時輸入其它型態會出問題.這樣本型態裡有三個成員運算子.
operator * 這會回傳剛剛你讀取的值.
operator -> 如果使用型態是自定的話那可用->讀取型態裡公開的成員.
operator ++ 讀取下個值
ostream_iterator可以講是個輸出的方法.用這樣本型態時你要先表明輸出的型態是啥.
std::ostream_iterator outputInt(cout);
這表示outputInt這個變數是個專門用cout輸出int的ostream_iterator.你只能用outputInt來輸出int.若在用outputInt輸出其它型態會出問題.這樣本型態裡有三個成員運算子.
operator *和operator = 輸出你要的值
operator ++ 無意義.
例:
#include
#include
using namespace std;
int main()
{
/* 宣告in是個以cin為主專門從cin裡讀取int的一個istream_iterator
的變數.在建造in時就會向cin讀取第一個int */
istream_iterator in(cin);
/* 宣告out是個以cout為主專門用cout輸出int的一個ostream_iterator
的變數.*/
ostream_iterator out(cout);
int i = 1;
while ( i != 0 ) {
/* 把剛讀取的數提出並存入i裡.其時這跟cin >> i沒差 */
i = *in;
/* 顯示i,其時這跟cout<< i沒差 */
out = i; /* 顯示i */
in++; /* 讀取下一個int */
}
return(0);
}
再給你一個例子.這例子裡我們在宣告istream_iterator和ostream_iterator時是用自定的I形態.所以在I裡一定要有operator <<()和operator >>().這例子裡我們用inputInt->來取出剛讀到的I裡的i.
#include
#include
using namespace std;
class I
{
public:
int i;
I() : i (0) {};
I(int i) : i(i) {};
friend istream & operator >> (istream & l, I& r) { return(l >> r.i); }
friend ostream & operator << (ostream & l, const I& r) { return(l << r.i); }
};
int main()
{
istream_iterator in (cin);
ostream_iterator out (cout);
while (in->i != 0) {
out = in->i;
in++;
}
return(0);
}
懂不懂?不懂請再問

2007-01-28 10:05:18 補充:
當然可以啦.
std::ostream_iterator outputInt(cout);
這表示outputInt是個"專門用cout輸出int"的ostream_iterator
試想那如果我要一個叫out的ostream_iterator變數."專門用cout輸出float"的話要怎麼寫?
那又假如我已有一個ofstream的變數叫outfile.那如果我要一個叫ofile的ostream_iterator變數."專門用outfile輸出float"的話要怎麼寫?
懂不懂?不懂請再問

2007-01-28 10:12:05 補充:
我看的都是原文書.不知合你胃口嗎?
P.S. Linkin Park ROCKS!!!

2007-01-29 02:13:36 補充:
是我的疏忽,因補充不能用顏色.所以看不太出來.我這樣寫好了

std::ostream_iterator outputInt(cout);
outputInt是個專門用cout輸出int的ostream_iterator

std::ostream_iterator out(cout);
out是個專門用cout輸出float的ostream_iterator

2007-01-29 02:13:46 補充:
ofstream outfile;

std::ostream_iterator out(?);
ofile是個專門用outfile輸出int的ostream_iterator

這樣像算代數一樣.把值代進去看看吧.

2007-01-29 02:58:04 補充:
上面最後的

std::ostream_iterator out(?);

應是

std::ostream_iterator ofile(?);

2007-01-27 18:25:52 · answer #1 · answered by 7 · 0 0

兩者是一種Stream的interator,就是類似於指標
std::istream_iterator inputInt(cin)表示為cin產生整數型別的istream_iterator
既然是類似指標當然就可以做遞增、遞減或註標運算

2007-01-27 18:33:15 · answer #2 · answered by 小雞不要跑 1 · 0 0

fedest.com, questions and answers