以cin為引數的istream iterator流迭代器int物件在輸入的時候,如何結束? 10

時間 2025-05-15 11:16:32

以cin為引數的istream_iterator流迭代器int物件在輸入的時候,如何結束?

1樓:陳宗權

你可以用結束符ctrl+d來表示結束。

#include

#include

using namespace std;

int main()

istream_iteratorii(cin);

int data;

while(true){

data = ii;//取得叢辯好輸入的資料。

if(!cin) break;//如果失敗(ctrl+d,或者非數字字元)就結束。

cout <+ii;cout 你也灶型可以指定乙個表示滲鉛結束的值,這樣就可以通過它來判斷結束了。

2樓:匿名使用者

可以用結束符ctrl+d來表示。祥老空編譯程式如下:

#include

#include

using namespace std;

int main()

istream_iterator《謹瞎int> ii(cin);

int data;

while(true){

data = ii;//取得輸入的資料。

if(!cin) break;//如果失敗(ctrl+d,或者非數字字元)就結束。

cout <+ii;cout 你也可以指定乙個表示結束的值,這樣就可以含檔通過它來判斷結束了。

c++ stl中,istream_iteratorpit(cin)是什麼意思?

3樓:魔石

eof=end of file的縮寫,istream_iteratoreof定義了乙個輸入流迭代器eof,其指向輸入資料的最後位置+1,即指示的為null位置,此時,判斷條件while(pit !=eof)為true(即兩個迭代器指向位置不同)則 迴圈進行,當遍歷完資料之後,迭代器超出,此時迭代器pit剛好指向eof指向的位置,二者只想相同,判斷結果為false,結束迴圈。

4樓:小兆

沒有顯示初始化就是使用預設的初始化,你可以認為這裡是null,但是可能不同的實現是不一樣的,比如檔案的結束是 -1。

迭代器++執行下乙個資料,迭代器的最後有個所謂的空資料。在這裡跟字串最後的null很類似的。

istream_iterator 工作流程

5樓:網友

istream_iterator是標準庫為我們提供的再iostream物件上使用的迭代器,用於讀取輸入流。它是類模版,istream_iteratorone(cin)這樣的語句建立乙個istream_iterator迭代器物件one,並使用標準輸入流cin來初始化它,用於從cin中讀取int型的資料。那麼下面幾點:

1. istream_iteratoreof是乙個eof迭代器,並不是我們常說的eof。它沒有任何標準輸入流來初始化,所以是乙個空的迭代器。用於表示讀到結束。

2. 怎樣結束one迭代器的讀取?當遇到檔案結束(如輸入ctrl+z)或者非int型值(發生讀取錯誤了)就會結束。

所以你可以在執行時直接輸入 1 2 3 4 ctrl+z (回車)來看看執行效果或者1 2 3 s(回車)。

它們都是結束了輸入流,因為ctrl+z標誌結束,s是乙個非int型值。

3. 由於程式使用cin來初始化輸入迭代器one,所以開始先等待你的輸入,並讀取到緩衝區。當你按下回車,系統以為你的輸入結束(可能包含結束標誌的輸入),往下執行。

所以才執行cout語句。

4. 為什麼輸入1 2 3 4 5 6(回車)輸出只到5呢?因為temp=(*one++)這條語句的原因。

當one迭代器指向5的時候,temp=5,然後one迭代器指向6,輸出了5,再迴圈時,temp = 6,one++使得one指向6後面的迭代器,而你的輸入6後面沒有下乙個合法位置,所以程式就在這裡等待了,不執行cout《輸入乙個比如s,one指向的位置不合法,其值等於乙個空物件即eof,所以結束輸入。

說了這麼多,希望對你有幫助。

c++標準輸入輸出流迭代器

6樓:金毛獅王

幫你修改正常了,你的++操作符在被編譯器解析時不是你想像的順序,迭代器移動式b總比a慢一拍。你好好看一下++和*的優先順序就明白了。++高於*。

另外,表示式是從右向左解析的。

首先,istream_iteratora(cin);時要求一次輸入,例如輸入了5.

然後,*b++=a++;執行時,先要求a進行一次輸入,例如輸入了4;然後b被要求輸出,此時輸出的是第一次輸入a的5,再加上delim 『b』。

#include

#include

#include

using namespace std;

int main()

istream_iteratora(cin);

ostream_iteratorb(cout,"b");

while(*a!=eof)

b=*a;b++;a++;

7樓:網友

站位等答案。

我想應該是iterator的機制問題。

stl中的istream_iterator

8樓:_鈊_煩_薏亂

copy是乙個泛型演算法,大體意思是把後面的東西拷貝到輸入流中,看看這個例程:

stl演示程式版本:輸入--排序--輸出,stl完美演繹#include

#include //用於人機介面互動。

#include //為了使用vector容器#include //為了使用sort演算法#include //為了使用輸入輸出迭代器using namespace std;

int main(void)

c++,對自定義的型別用istream_iterator出錯!

9樓:網友

std::ostream& operator<<(std::ostream& out,const node& n)

輸出的型別要改成 const node &。基本上就是儘量用const, 因為stl裡面用了很多,你不用就接不到一起去。

c++流迭代器如何轉換繫結物件

10樓:匿名使用者

直接複製構造廳兆臘就行了,不過只能從同模板引數型別構造:

#include

#include

using namespace std;

int main()

ostream_iterator猜敗 oi(cout);

oi = 123;

oi = 456;

oi = ostream_iterator(cout, "流你可以再這裡改扮滑。

oi = 333;

oi = 444;

11樓:匿名使用者

不同型別的你就別隻定義乙個了。如果兩個是同型別的。解綁直接用另外乙個賦值過來就ok了。

c++輸入流可以用流迭代器排序嗎

12樓:網友

最基本的,排序就要修改元素,輸入流能修改嗎。

此外輸入流還有些東西不滿足,所以很多演算法都不能直接應用於流迭代器。

先把輸入的內容放到乙個容器中,就能對容器排序了。

13樓:打響_第一炮

我看的書說sort()需要隨機訪問迭代器,而輸入流只是輸入迭代器。

c++乙個疑問,請看載圖

14樓:物理公司的

主要原因是因為沒理解流迭代器。

iostream迭代器的建構函式:

istream_iteratorin(cin);

建立從輸入流cin讀取t型別物件的istream_iterator物件。

istream_iteratorin;

istream_iterator物件的超出末端迭代器。

他的初始化方式就說明了他是末端迭代器。

上面這個例子。

istream_iteratorin_iter(cin);

istream_iteratoreof;

vectorvec(in_iter,eof);

這裡用一對標記元素範圍的迭代器構造vec物件。這些迭代器是istream_iterator物件。這就意味著這段範圍的元素是通過讀取所關聯的流來獲得的。

這個建構函式效果是讀cin,直到到達檔案結束或輸入的不是int型數值為止。

名字是自己定義的。

15樓:萢萢

你的圖中的這個是自定義的,不是系統定義的。

你說的系統定義的eof,是大寫的。

16樓:

eof確實不是自己定義的啊,end of file讀取檔案時表示讀到檔案結尾。

以快樂為話題的作文,以快樂為話題的作文

原凌晴 快樂是什麼?快樂是每一位母親忙碌的身影。母親 是世界上最偉大的名詞,她們為了孩子默默地辛勞,不知勞苦,母親的腦海中永遠只記得 孩子快樂了,我就快樂。正如葉傾城筆下 走在每一位母親的情懷裡 裡的每一位不知姓名的母親,為了孩子們的春遊而排隊買麵包,手中還拎著大袋孩子們的零食,卻又不敢擱放在一旁,...

以憐憫為題的作文,以憐憫為題的作文

蘿莉御姐反 在 兒童文學 上看過這樣一篇故事 一天,乙個兩歲多的小女孩和她的家人一起在看一部 熊 的法國記錄片。但是的螢幕上,乙隻熊媽媽和乙隻熊寶寶早森林裡找食物。熊媽媽用乙隻手護住頭,乙隻手去挑枝幹間的蜂窩。這時,突然從山上滾下一快巨石,把熊媽媽壓住了。小熊不知道熊媽媽是不能起來的,所以,即使小熊...

以窗外為話題的作文,以窗外為話題的作文

剎那永恆 窗外的世界 扇動著纖弱的羽翼,沐浴著昔日的陽光,抖去夏天的不安,披上金黃的目光。彼岸,依舊是和著寒風的故土,在瀰漫著淡淡的清香。一種熟悉的聲音在呼喚著,一種溫柔的語言在夢魂縈繞,一種沉重的諾言在渺茫的心靈曠野上 落定塵埃。多少著風雨之夜,我捫心自問著不爭氣的我,竟然沒有發現窗外的世界是如此...