Re: [問題] ostream_iterator * 取值和 ++ 分開做結果不同
※ 引述《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
02/27 13:32, 2F
→
02/27 13:33, , 3F
02/27 13:33, 3F
推
02/27 13:37, , 4F
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
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
02/27 18:32, 10F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章