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.

Go Back   { mindfrost82.com } > Gadget Corner > Tech Newsgroups > Programming > C++

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1 (permalink)  
Old 08-16-2008, 03:08 AM
sharlene.emu@googlemail.com
 
Posts: n/a
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! ]

Reply With Quote
  #2 (permalink)  
Old 08-17-2008, 04:24 AM
Pavel Minaev
 
Posts: n/a
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! ]

Reply With Quote
  #3 (permalink)  
Old 08-17-2008, 04:27 AM
Mathias Gaunard
 
Posts: n/a
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! ]

Reply With Quote
  #4 (permalink)  
Old 08-17-2008, 03:43 PM
Vidar Hasfjord
 
Posts: n/a
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! ]

Reply With Quote
  #5 (permalink)  
Old 08-17-2008, 05:58 PM
Mathias Gaunard
 
Posts: n/a
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! ]

Reply With Quote
Reply

  { mindfrost82.com } > Gadget Corner > Tech Newsgroups > Programming > C++


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are Off
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT. The time now is 02:23 PM.


Powered by vBulletin, Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0 ©2007, Crawlability, Inc.
© 1999-2008 mindfrost82.com v11.0


Sponsors:
Remortgages | Per Insurance | Advertising | Online Advertising | Gas Suppliers



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114