![]() |
|
|
Welcome to the { mindfrost82.com } forums. You are currently viewing our boards as a guest which gives you limited access to view most discussions and access our other features. By joining our free community you will have access to post topics, communicate privately with other members (PM), respond to polls, upload content and access many other special features. Registration is fast, simple and absolutely free so please, join our community today! If you have any problems with the registration process or your account login, please contact contact us. |
|
|||||||
![]() |
|
|
LinkBack | Thread Tools | Search this Thread | Display Modes |
|
|||
|
Constructing a string using istream_iterators
Hello, I'm trying to construct a string using an istream_iterator.
However, the resulting string is always empty. I was originally using a file stream, but the same thing happens with a stringstream too. Here's a simple example: stringstream sstr("ABCD"); istream_iterator<char> it1(sstr); istream_iterator<char> it2(sstr); ++it2; ++it2; string str22(it1, it2); Thanks. -- [ See http://www.gotw.ca/resources/clcm.htm for info about ] [ comp.lang.c++.moderated. First time posters: Do this! ] |
|
|||
|
Re: Constructing a string using istream_iterators
sharlene....@googlemail.com wrote:
> Hello, I'm trying to construct a string using an istream_iterator. > However, the resulting string is always empty. I was originally using > a file stream, but the same thing happens with a stringstream too. > Here's a simple example: > > stringstream sstr("ABCD"); > istream_iterator<char> it1(sstr); > istream_iterator<char> it2(sstr); > > ++it2; > ++it2; > > string str22(it1, it2); It is simply not how istream_iterator works. Two istream_iterators that are not at the end of the stream are never equal to each other; and conversely, the only case where i1==i2 is when both are end-of- stream iterators. So, the only way to define a range using istream_iterators is to specify the end-of-stream iterator as the end of the range. -- [ See http://www.gotw.ca/resources/clcm.htm for info about ] [ comp.lang.c++.moderated. First time posters: Do this! ] |
|
|||
|
Re: Constructing a string using istream_iterators
On 16 août, 04:08, sharlene....@googlemail.com wrote:
> Hello, I'm trying to construct a string using an istream_iterator. > However, the resulting string is always empty. I was originally using > a file stream, but the same thing happens with a stringstream too. > Here's a simple example: > > stringstream sstr("ABCD"); > istream_iterator<char> it1(sstr); > istream_iterator<char> it2(sstr); > > ++it2; > ++it2; > > string str22(it1, it2); it1 and it2 are equal. Therefore the range is empty. -- [ See http://www.gotw.ca/resources/clcm.htm for info about ] [ comp.lang.c++.moderated. First time posters: Do this! ] |
|
|||
|
Re: Constructing a string using istream_iterators
On Aug 16, 3:08 am, sharlene....@googlemail.com wrote:
> Hello, I'm trying to construct a string using an istream_iterator. > However, the resulting string is always empty. I was originally using > a file stream, but the same thing happens with a stringstream too. > Here's a simple example: > [snipped] The istream_iterator class models the Input Iterator concept. Input iterators are single pass and can not be used as "pointers" into a container, as your example seem to expect. Input iterators have very restricted requirements. See http://oopweb.com/CPP/Documents/STL/Volume/prw421.htm In particular, "for input iterators r and s, r==s does not imply ++r == ++s." For more information about iterator concepts, search the web. Regards, Vidar Hasfjord -- [ See http://www.gotw.ca/resources/clcm.htm for info about ] [ comp.lang.c++.moderated. First time posters: Do this! ] |
|
|||
|
Re: Constructing a string using istream_iterators
On 17 août, 05:27, Mathias Gaunard <loufo...@gmail.com> wrote:
> it1 and it2 are equal. > Therefore the range is empty. Oops, didn't read well. I thought you incremented it1 and it2. -- [ See http://www.gotw.ca/resources/clcm.htm for info about ] [ comp.lang.c++.moderated. First time posters: Do this! ] |
![]() |
|
| Thread Tools | Search this Thread |
| Display Modes | |
|
|