2010-11-20 9 views
2
ifstream file1; 
file1.open("in1.txt"); 
istream_iterator<string> iterator1(file1); 
copy(istream_iterator<string>(file1), istream_iterator<string>(), back_inserter(lstr)); 

1つのファイルを指す2つの入力ストリームイテレータを使用できますか?上記の場合と同じように、イテレータは高度化しています(1回の参照解除のみ)、最初の要素(文字列)がコピーにありません。可能な方法はありますか?2つの `istream_iterator`を1つのファイルに定義できますか?

+1

待機。 _Which_イテレータが高度/逆参照され、_what order_ ?? – sbi

+0

コピー関数(最初の引数)で作成されているイテレータは、ファイルの最初の要素を指しません。 – ajayreddy

答えて

2

あなたが先に進むことができますが、ファイルポインタが前進するので、次の前進に影響します。また、イテレータは作成時に一度進められますので、必要になるまでイテレータを作成しないでください。

+0

入力イテレータが「進む」とはどういう意味ですか? – sbi

+0

@sbi:std :: advanceまたはincrement。 –

+0

@Fredそれは入力イテレータのためのnoopですか? – sbi

1

標準では、要求規則に従ったノートとして24.1.1を裸にしています。そして誰もがStandardeseを聞きたいので、私はそれを引用しています

[注:入力イテレータの場合、a == bは++ a == ++ bを意味しません。 (等号では、代入プロパティや参照の透過性は保証されません)。入力イテレータのアルゴリズムは、同じイテレータを二度通過することは絶対にしないでください。それらはシングルパスアルゴリズムでなければなりません。

+1

私はそれが普通の英語で何を意味するのか分かりません。これらの標準化の人は、散文については全く意味がありません。 – sbi

関連する問題