istringstream question

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Viet Le Hong

    istringstream question

    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

    #2
    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.


    Comment

    • Viet Le Hong

      #3
      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!="IMAG ESIZE")
      throw parser_error_ex ception("Invali d image size command when reading
      camera");
      else
      {
      int width, height;
      ss >> width >> height;
      res.set_image_s ize(width,heigh t);
      }

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

      Comment

      • Buster Copley

        #4
        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!="IMAG ESIZE")
        > throw parser_error_ex ception("Invali d image size command when
        > reading camera");
        > else
        > {
        > int width, height;
        > ss >> width >> height;
        > res.set_image_s ize(width,heigh t);
        > }
        >
        > // read eye
        > next_line();
        > ss.str(buffer);
        > ss >> command;
        > if (command!="EYE" )
        > throw parser_error_ex ception("Invali d eye command when reading
        > camera");
        > else
        > {
        > double x,y,z;
        > ss >> x >> y >> z;
        > res.set_eye(x,y ,z);
        > }[/color]

        Comment

        Working...