我正在閱讀C++編程語言手冊,並且介紹了「Iterators和I/O」第61頁,他們給出以下示例來演示迭代通過提交的字符串。使用istream_iterator對int和字符串進行迭代
#include <iostream>
#include <iterator>
#include <string>
using namespace std;
int main()
{
istream_iterator<string>ii(cin);
istream_iterator<string>eos;
string s1 = *ii;
++ii;
string s2 = *ii;
cout <<s1 << ' '<< s2 <<'\n';
}
我完全理解,現在我用這個例子玩弄,使其成爲數字正常工作。我試着在相應的地方添加以下內容...
istream_iterator<int>jj(cin);
int i1 = *jj;
cout <<s1 << ''<< s2 << ''<< i1 <<'\n';
這不會讓我有機會在運行程序時輸入數字部分。這是爲什麼?迭代器只能在cin
上使用一次嗎?這樣它已經有來自cin
的輸入,所以下一個迭代器會被忽略?這裏
編輯是我插入後
#include <iostream>
#include <iterator>
#include <string>
using namespace std;
int main()
{
istream_iterator<string>ii(cin);
istream_iterator<string>eos;
//istream_iterator<int>dd(cin);
string s1 = *ii;
++ii;
string s2 = *ii;
//int d = *dd;
int d =24;
cout <<s1 << ' '<<s2<<' '<<d<< '\n';
}
爲
你好上述作品世界 或
你好
世界
給予的Hello World作爲該輸出。
從
istream_iterator<int>dd(cin);
int d = *dd;
去除意見和註釋掉
int d =24;
信息你好你好0作爲輸出。
你的第二個代碼片段不清;第二個陳述後i1的價值是什麼? – 2010-11-12 00:47:02
@evan現在修好了。 – phwd 2010-11-12 00:49:53
你的完整代碼是什麼樣的?你得到什麼輸出?你期待什麼輸出? – 2010-11-12 00:52:51