Hello,
When I copy contents from an input string to a vector, I typically use
something like this
vector<stringv;
ifstream in("file");
copy(istream_iterator<string(in), istream_iterator<string>(),
back_inserter(v));
However, I also tried to define istream_iterator separately. I did
istream_iterator<stringit(in);
this works, but there's no way I can define something equivalent to
istream_iterator<string>() above. I tried
istream_iterator<stringit;
and this failed. What does "istream_iterator<string>()" mean? Does
it define an iterator that's not bound to any istream? If so, why my
code above "istream_iterator<stringit;" doesn't work?
There are some error-detection functions, such as "bad(), "good()",
"fail()". I'm not sure what constitutes "errors". If I read from a
file and hit the end of the file, does it leave the stream in an error
state? If the reading reaches EOF, then do I need to use "clear()" to
reset it? If I use "clear()" to reset a stream (for whatever error
reasons), are the remaining data on the stream lost?
Thanks a lot!
Jess 10 1657
Jess wrote:
Hello,
When I copy contents from an input string to a vector, I typically use
something like this
vector<stringv;
ifstream in("file");
copy(istream_iterator<string(in), istream_iterator<string>(),
back_inserter(v));
However, I also tried to define istream_iterator separately. I did
istream_iterator<stringit(in);
this works, but there's no way I can define something equivalent to
istream_iterator<string>() above. I tried
istream_iterator<stringit;
and this failed.
It should work (apart from the fact that you seem to have used the
variable name 'it' twice). What error did you get?
What does "istream_iterator<string>()" mean? Does
it define an iterator that's not bound to any istream? If so, why my
code above "istream_iterator<stringit;" doesn't work?
There are some error-detection functions, such as "bad(), "good()",
"fail()". I'm not sure what constitutes "errors". If I read from a
file and hit the end of the file, does it leave the stream in an error
state?
Yes
If the reading reaches EOF, then do I need to use "clear()" to
reset it?
Yes, but be careful here, reaching the end of file is not the same as
trying to read past the end of file. Only the latter is an error.
If I use "clear()" to reset a stream (for whatever error
reasons), are the remaining data on the stream lost?
No
>
Thanks a lot!
Jess
On Jun 17, 11:16 pm, John Harrison <john_androni...@hotmail.com>
wrote:
Jess wrote:
Hello,
When I copy contents from an input string to a vector, I typically use
something like this
vector<stringv;
ifstream in("file");
copy(istream_iterator<string(in), istream_iterator<string>(),
back_inserter(v));
However, I also tried to define istream_iterator separately. I did
istream_iterator<stringit(in);
this works, but there's no way I can define something equivalent to
istream_iterator<string>() above. I tried
istream_iterator<stringit;
and this failed.
It should work (apart from the fact that you seem to have used the
variable name 'it' twice). What error did you get?
Thanks, I tried it again, and this error disappears. :) By the way,
it seems both "istream_iterator it();" and "istream_iterator it;"
work, is there any difference?
Jess
Jess wrote:
On Jun 17, 11:16 pm, John Harrison <john_androni...@hotmail.com>
wrote:
>Jess wrote:
Hello,
When I copy contents from an input string to a vector, I typically use
something like this
vector<stringv;
ifstream in("file");
copy(istream_iterator<string(in), istream_iterator<string>(),
back_inserter(v));
However, I also tried to define istream_iterator separately. I did
istream_iterator<stringit(in);
this works, but there's no way I can define something equivalent to
istream_iterator<string>() above. I tried
istream_iterator<stringit;
and this failed.
It should work (apart from the fact that you seem to have used the variable name 'it' twice). What error did you get?
Thanks, I tried it again, and this error disappears. :) By the way,
it seems both "istream_iterator it();" and "istream_iterator it;"
work, is there any difference?
istream_iterator it();
declares it as a function returning an istream_iterator, whereas
istream_iterator it;
defines it as an istream_iterator object and calls its default constructor.
--
rbh
Jess wrote:
On Jun 17, 11:16 pm, John Harrison <john_androni...@hotmail.com>
wrote:
>Jess wrote:
>>Hello, When I copy contents from an input string to a vector, I typically use something like this vector<stringv; ifstream in("file"); copy(istream_iterator<string(in), istream_iterator<string>(), back_inserter(v)); However, I also tried to define istream_iterator separately. I did istream_iterator<stringit(in); this works, but there's no way I can define something equivalent to istream_iterator<string>() above. I tried istream_iterator<stringit; and this failed.
It should work (apart from the fact that you seem to have used the variable name 'it' twice). What error did you get?
Thanks, I tried it again, and this error disappears. :) By the way,
it seems both "istream_iterator it();" and "istream_iterator it;"
work, is there any difference?
Jess
Well this time I will say that it should NOT work. This
istream_iterator<stringit;
declares a variable called 'it' of type istream_iterator<string>, no
problem. But this
istream_iterator<stringit();
declares a FUNCTION called 'it' which takes zero arguments and returns a
istream_iterator<string>. This is a common newbie mistake, by adding the
brackets you've written a function prototype.
I guess this was the source of your original confusion.
john
I see my problems now, thanks!
On the other hand, in program
copy(istream_iterator<string(in), istream_iterator<string>(),
back_inserter(v));
Does it convert "in" to an istream_iterator<string>? If so, what is
"istream_iterator<string>()"? Neither of them looks like a function
call or constructing an istream_iterator<stringobject...
Jess
On Sun, 17 Jun 2007 06:52:21 -0700, Jess wrote:
I see my problems now, thanks!
On the other hand, in program
copy(istream_iterator<string(in), istream_iterator<string>(),
back_inserter(v));
Does it convert "in" to an istream_iterator<string>? If so, what is
"istream_iterator<string>()"? Neither of them looks like a function
call or constructing an istream_iterator<stringobject...
Jess
'istream_iterator<string>(in)' creates a temporary object based on 'in'
'istream_iterator<string>()' creates a temporary object representing the
end iterator.
'back_inserter(v)' creates a temporary object
Consider:
class T {};
T t = T();
--
Obnoxious User
On Jun 17, 11:44 pm, Obnoxious User <O...@127.0.0.1wrote:
On Sun, 17 Jun 2007 06:52:21 -0700, Jess wrote:
I see my problems now, thanks!
On the other hand, in program
copy(istream_iterator<string(in), istream_iterator<string>(),
back_inserter(v));
Does it convert "in" to an istream_iterator<string>? If so, what is
"istream_iterator<string>()"? Neither of them looks like a function
call or constructing an istream_iterator<stringobject...
Jess
'istream_iterator<string>(in)' creates a temporary object based on 'in'
'istream_iterator<string>()' creates a temporary object representing the
end iterator.
'back_inserter(v)' creates a temporary object
Consider:
class T {};
T t = T();
I'm sometimes confused by the object creation syntax. To create an
object t of type T, I think I can use the following statements.
T t; //default constructor
T t(arg); //constructor with argument arg
T t = T(); //call default constructor for T()? then call copy
constructor to create t using the temporary object created from T()
T t = T(arg); //does the right hand side call the constructor with
argument arg, then call the copy constructor to get t?
T t = existing_t_object;
T* tp = new T; //call default constructor
T* tp = new T(arg); //constructor with argument arg
Are they correct? Have I missed something?
Thanks,
Jess
On Jun 17, 3:52 pm, Jess <w...@hotmail.comwrote:
I see my problems now, thanks!
On the other hand, in program
copy(istream_iterator<string(in), istream_iterator<string>(),
back_inserter(v));
Does it convert "in" to an istream_iterator<string>? If so, what is
"istream_iterator<string>()"? Neither of them looks like a function
call or constructing an istream_iterator<stringobject...
According to the standard, they are both function style casts.
The first converting in into an istream_iterator<string>, and
the second converting nothing into an istream_iterator<string>.
In practice, most people view them as explicit creation of a
temporary, the first initialized with "in", and the second
initialized using the default constructor. (Converting nothing
into something doesn't sound much like a cast in most people's
mind, regardless of what the standard calls it.)
--
James Kanze (Gabi Software) email: ja*********@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
On Jun 17, 4:25 pm, Jess <w...@hotmail.comwrote:
On Jun 17, 11:44 pm, Obnoxious User <O...@127.0.0.1wrote:
On Sun, 17 Jun 2007 06:52:21 -0700, Jess wrote:
I see my problems now, thanks!
On the other hand, in program
copy(istream_iterator<string(in), istream_iterator<string>(),
back_inserter(v));
Does it convert "in" to an istream_iterator<string>? If so, what is
"istream_iterator<string>()"? Neither of them looks like a function
call or constructing an istream_iterator<stringobject...
'istream_iterator<string>(in)' creates a temporary object based on 'in'
'istream_iterator<string>()' creates a temporary object representing the
end iterator.
'back_inserter(v)' creates a temporary object
Consider:
class T {};
T t = T();
I'm sometimes confused by the object creation syntax. To create an
object t of type T, I think I can use the following statements.
T t; //default constructor
T t(arg); //constructor with argument arg
T t = T(); //call default constructor for T()? then call copy
constructor to create t using the temporary object created from T()
T t = T(arg); //does the right hand side call the constructor with
argument arg, then call the copy constructor to get t?
T t = existing_t_object;
T* tp = new T; //call default constructor
T* tp = new T(arg); //constructor with argument arg
Are they correct? Have I missed something?
They're all correct for creating named objects. There are,
however, two types unnamed objects: those created using operator
new (dynamically allocated objects), and temporary objects. A
temporary object is the result of an expression: in the case of
an object of class type, a function call or a "cast". Thus, for
example: "static_cast< T >( arg )" behaves exactly like "T
t(arg)", except that the resulting object is unnamed. Of
course, there are two other ways of writing
"static_cast<T>(arg)": "(T)arg" and "T(arg)". In the latter
case, the standard also allows 0 or more than one argument; it
still calls it a cast, even if it doesn't seem very logical.
--
James Kanze (Gabi Software) email: ja*********@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
On Jun 18, 5:51 am, James Kanze <james.ka...@gmail.comwrote:
On Jun 17, 4:25 pm, Jess <w...@hotmail.comwrote:
On Jun 17, 11:44 pm, Obnoxious User <O...@127.0.0.1wrote:
On Sun, 17 Jun 2007 06:52:21 -0700, Jess wrote:
I see my problems now, thanks!
On the other hand, in program
copy(istream_iterator<string(in), istream_iterator<string>(),
back_inserter(v));
Does it convert "in" to an istream_iterator<string>? If so, what is
"istream_iterator<string>()"? Neither of them looks like a function
call or constructing an istream_iterator<stringobject...
'istream_iterator<string>(in)' creates a temporary object based on 'in'
'istream_iterator<string>()' creates a temporary object representing the
end iterator.
'back_inserter(v)' creates a temporary object
Consider:
class T {};
T t = T();
I'm sometimes confused by the object creation syntax. To create an
object t of type T, I think I can use the following statements.
T t; //default constructor
T t(arg); //constructor with argument arg
T t = T(); //call default constructor for T()? then call copy
constructor to create t using the temporary object created from T()
T t = T(arg); //does the right hand side call the constructor with
argument arg, then call the copy constructor to get t?
T t = existing_t_object;
T* tp = new T; //call default constructor
T* tp = new T(arg); //constructor with argument arg
Are they correct? Have I missed something?
They're all correct for creating named objects. There are,
however, two types unnamed objects: those created using operator
new (dynamically allocated objects), and temporary objects. A
temporary object is the result of an expression: in the case of
an object of class type, a function call or a "cast". Thus, for
example: "static_cast< T >( arg )" behaves exactly like "T
t(arg)", except that the resulting object is unnamed. Of
course, there are two other ways of writing
"static_cast<T>(arg)": "(T)arg" and "T(arg)". In the latter
case, the standard also allows 0 or more than one argument; it
still calls it a cast, even if it doesn't seem very logical.
--
James Kanze (Gabi Software) email: james.ka...@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
I see now, thanks a lot!
Jess This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics |
by: John Banta |
last post by:
Hi,
I have created a 12 month calendar where each day has a check box
whereby the user can indicate if that day is available or not
available for a certain event. The calendar is 'drawn' in a...
|
by: wolfing1 |
last post by:
Like, I know if several checkboxes have the same name, I can get the
ones that were checked after submit with a request.form("name") and
maybe do a split(request.form("name"),",") to cycle through...
|
by: Iver Erling Årva |
last post by:
I am looking for a way to let the users copy e.g. a multi-line address from
a textfile and paste it into a webpage where there is one input field for
each address line in such a way that not only...
|
by: wolfing1 |
last post by:
how would I go doing it without javascript and using 'POST'?
Having a page with a variable list of items in a shopcart, each item
with its own 'remove' button. How could I do this without a...
|
by: Chris |
last post by:
I have a meetings section I'm developing on our intranet. Using PHP/MySQL.
Meeting info and Meeting docs reside on 2 related tables in the db. Users
may want to upload anywhere from 1 to 10 or...
| |
by: alice |
last post by:
I've been trying for a long time to figure this out, to have a page
with several MP3 clips, and each one having a custom start and stop
button next to them to play the track. I finally found a bit...
|
by: Otto Wyss |
last post by:
In a form I've several buttons which submits the form and I'd like to do
different checks in the onsubmit event handler. How can I find out which
button was activated?
<script...
|
by: TP |
last post by:
Hi everybody,
When using raw_input(), the input of the user ends when he types Return on
his keyboard.
How can I change this behavior, so that another action is needed to stop the
input? For...
|
by: metafizzical |
last post by:
Hi,
I have an object that contains the main data for my script. For example:
function Invoice() {
this.name="bob"
this.email="abc@example.com"
}
I'm trying to access and edit the...
|
by: marktang |
last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
|
by: Hystou |
last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
| |
by: Oralloy |
last post by:
Hello folks,
I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>".
The problem is that using the GNU compilers,...
|
by: jinu1996 |
last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
|
by: tracyyun |
last post by:
Dear forum friends,
With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
|
by: agi2029 |
last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
|
by: conductexam |
last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and...
|
by: TSSRALBI |
last post by:
Hello
I'm a network technician in training and I need your help.
I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs.
The...
| |
by: muto222 |
last post by:
How can i add a mobile payment intergratation into php mysql website.
| |