Connecting Tech Pros Worldwide Forums | Help | Site Map

istringstream question

Viet Le Hong
Guest
 
Posts: n/a
#1: Jul 19 '05
Hi,
Is there any way to initiate a istringstream object's string without
using constructor. I have tried the str() function but it did not work.
For example, I want to write the following code:

istreamstring iss(my_string);

then do somethings that involes the >> operator

then I want to change the string content in this buffer to other string
and use the >> operator on it again.

I have tried iss.str(my_new_string), but it does not work.Anybody knows
how to do this?

Thanks very much
Viet


Buster
Guest
 
Posts: n/a
#2: Jul 19 '05

re: istringstream question


"Viet Le Hong" <lhviet@iprimus.com.au> wrote[color=blue]
> Hi,
> Is there any way to initiate a istringstream object's string without
> using constructor. I have tried the str() function but it did not work.
> For example, I want to write the following code:
>
> istreamstring iss(my_string);
>
> then do somethings that involes the >> operator
>
> then I want to change the string content in this buffer to other string
> and use the >> operator on it again.
>
> I have tried iss.str(my_new_string), but it does not work.Anybody knows
> how to do this?[/color]

That is how you do it. It works for me. Post a complete, compilable code
sample and tell us where the error occurs.


Viet Le Hong
Guest
 
Posts: n/a
#3: Jul 19 '05

re: istringstream question


That was the code I have written in my program, sorry I could not post
all my program because it's quite long. The next light function read new
line from a file, I have check the function and it works fine. The
problen happens after the >> call in the read eye part, it does not
change the value of "command" variable at all.
Thanks
Viet
camera res;


string command;
// read image size
next_line();
istringstream ss(buffer);
ss >> command;
if (command!="IMAGESIZE")
throw parser_error_exception("Invalid image size command when reading
camera");
else
{
int width, height;
ss >> width >> height;
res.set_image_size(width,height);
}

// read eye
next_line();
ss.str(buffer);
ss >> command;
if (command!="EYE")
throw parser_error_exception("Invalid eye command when reading camera");
else
{
double x,y,z;
ss >> x >> y >> z;
res.set_eye(x,y,z);
}

Buster Copley
Guest
 
Posts: n/a
#4: Jul 19 '05

re: istringstream question


Viet Le Hong wrote:[color=blue]
> That was the code I have written in my program, sorry I could not post
> all my program because it's quite long. The next light function read new
> line from a file, I have check the function and it works fine. The
> problen happens after the >> call in the read eye part, it does not
> change the value of "command" variable at all.
> Thanks[/color]

What might have happened, is that the stream object is put into an
invalid state by one of the read operations. You should generally
test the state of a stream after every read. The clear () member
function is used to reset the state.

The comp.lang.c++ FAQ (Google for C++ FAQ) has a good section on IO
which is almost certain to help you get your code working.

Regards,
Buster.
[color=blue]
> Viet
> camera res;
>
>
> string command;
> // read image size
> next_line();
> istringstream ss(buffer);
> ss >> command;
> if (command!="IMAGESIZE")
> throw parser_error_exception("Invalid image size command when
> reading camera");
> else
> {
> int width, height;
> ss >> width >> height;
> res.set_image_size(width,height);
> }
>
> // read eye
> next_line();
> ss.str(buffer);
> ss >> command;
> if (command!="EYE")
> throw parser_error_exception("Invalid eye command when reading
> camera");
> else
> {
> double x,y,z;
> ss >> x >> y >> z;
> res.set_eye(x,y,z);
> }[/color]

Closed Thread