Re: [問題] ostream_iterator * 取值和 ++ 分開做結果不同

看板C_and_CPP (C/C++)作者 (ShaDer)時間13年前 (2013/02/27 12:49), 編輯推噓4(406)
留言10則, 3人參與, 最新討論串3/3 (看更多)
※ 引述《ga718293 (嫩b福)》之銘言: : ※ 引述《ga718293 (嫩b福)》之銘言: : : c++ primer 11.3.2 : : 書上給: : : ostream_iterator<string> out_iter(cout, "\n"); : : istream_iterator<string> in_iter(cin), eof; : : while ( in_iter != eof ) : : *out_iter++ = *in_ter++; : : 其中改成: : : while ( in_ter != eof ) { : : *out_iter = *in_ter; : : ++out_iter; : : ++in_iter; : : } : : 兩者執行的結果不一樣 怎麼一回事....... : 上面執行: 123 456 789 : 123 : 456 : ^z : 789 : 下面執行: 123 456 789 : 123 : 456 : 789 : ^z 可否請原PO問問題的時候附上完整程式碼和輸入輸出的資料? 因為你這程式碼就連變數名稱都打錯,根本就不是拿來編譯的 那一份;問問題時應該詳細敘述,否則想回答的人就像瞎子摸 象,不只思考問題的主體,還要花時間在理解「你的問題」, 這種浪費時間的行為讓人有些不想回答…… 根據原PO的說法是書本上的寫法改成下文所提的寫法之後即造 成結果錯誤,但我以線上編譯網站測試編譯之後再執行的結果 並沒有錯誤,總之因為資訊不夠,我就猜猜吧!以下附上我的 程式碼: /***********************\ | Author: ShaDer (ShaD) | | Language: C++ | | Compiler: gcc-4.7.2 | |-----------------------| | input: | | 123 456 789 | |-----------------------| | output: | | 123 | | 456 | | 789 | \***********************/ #include <iostream> #include <iterator> #include <string> using namespace std; int main() { ostream_iterator<string> out_iter(cout, "\n"); istream_iterator<string> in_iter(cin), eof; while ( in_iter != eof ) { *out_iter = *in_iter; ++out_iter; ++in_iter; } return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.161.48.5

02/27 13:31, , 1F
謝謝你的指導.. 程式碼就如你所寫 但是回圈內改成
02/27 13:31, 1F

02/27 13:32, , 2F
*out_iter++ = *in_iter++; 執行結果不一致..
02/27 13:32, 2F

02/27 13:33, , 3F
還請大大 分享點經驗值給我這死新手.......
02/27 13:33, 3F

02/27 13:37, , 4F
如果你的沒錯的話 可能就是我的code::blocks的問題了八
02/27 13:37, 4F

02/27 13:42, , 5F
同好交流不在乎是否新手(我也新手);詳述問題才能快速得
02/27 13:42, 5F

02/27 13:43, , 6F
到解答。你試試看我的程式碼,我測沒有問題。
02/27 13:43, 6F

02/27 13:52, , 7F
我用線上測OK 換到cmd上執行就有點不太一樣
02/27 13:52, 7F

02/27 13:55, , 8F
抱歉,目前電腦沒裝編譯器,無法在指令行幫忙測。
02/27 13:55, 8F

02/27 13:58, , 9F
不會 很謝謝你這麼熱心幫忙!!
02/27 13:58, 9F

02/27 18:32, , 10F
in_iter++ // or ++in_iter 在等輸入的關係吧~
02/27 18:32, 10F
文章代碼(AID): #1HBP12mq (C_and_CPP)
文章代碼(AID): #1HBP12mq (C_and_CPP)