hmm when i tried this it did not work either. my docs seem to indicate that it
only works on input from a stream not output... let me know though!

elrod

Lee Dohm wrote:

> Yes ... there is a way to turn off the delimiter ... I believe it is a
> manipulator called skipws
>
> I'll double check tomorrow at work with my references, but that should do
> it.  That just turns off the delimiting ... I don't know if you can change
> the delimiter without changing the underlying facet.
>
> Lee Dohm
>
> > -----Original Message-----
> > From: [EMAIL PROTECTED]
> > [mailto:[EMAIL PROTECTED]]On Behalf Of Mark B. Elrod
> > Sent: Tuesday, September 28, 1999 11:36 PM
> > To: [EMAIL PROTECTED]
> > Subject: Re: Aid me with string streams! <grin>
> >
> >
> > I could do the copy and erase bit with the code i  have now.
> > streams are so
> > nice and convenient i was hoping to be able to use it. they are
> > so flexible i
> > can't believe there is not a way to say a) give me the remainder
> > of the data
> > or b) turn off the delimiter crap. Speaking of which is there a
> > way to set the
> > delimiter?
> >
> > elrod
> >
> > [EMAIL PROTECTED] wrote:
> >
> > > On 28 Sep, Mark B. Elrod wrote:
> > > > since the mailing list does not like us asking for help int he subject
> > > > line here is my message again...
> > > >
> > > > i have a string which has a bunch of numbers i want to read
> > out and then
> > > > a char buffer as well. the string is of the form:
> > > >
> > > > [num fields] [length field 1] [length field 2] ... [length field n -1]
> > > > [length field n] [buffer]
> > > >
> > > > i can easily read the beginning numbers but the data blob is elluding
> > > > me. for the first part i want to use the delimiting behavior of >> to
> > > > pull out the individual numbers but for the second part i want to just
> > > > get the remainder of the stream including whitespace. anyone out there
> > > > who is knowledgeable about streams? here is my code so far:
> > >
> > > Probably not how you want to do this, but it works:
> > >
> > > #include <stdio.h>
> > > #include <string>
> > >
> > > typedef unsigned int uint32;
> > >
> > > int main(void)
> > > {
> > >     string data("2 10 17 mark [EMAIL PROTECTED]");
> > >     uint32 numFields, offset = 0;
> > >
> > >     sscanf(data.c_str(), "%d%n", &numFields, &offset);
> > >     uint32* fieldLength =  new uint32[numFields];
> > >
> > >     for(uint32 i = 0; i < numFields; i++)
> > >     {
> > >        uint32 temp;
> > >
> > >        sscanf(data.c_str() + offset, " %d %n", &fieldLength[i], &temp);
> > >        printf("field %d: %d\n", i, fieldLength[i]);
> > >        offset += temp;
> > >     }
> > >
> > >     string copy = data;
> > >
> > >     copy.erase(0, offset);
> > >     printf("%s\n", copy.c_str());
> > > }
> > >
> > > That gives:
> > >
> > > field 0: 10
> > > field 1: 17
> > > mark [EMAIL PROTECTED]
> > >
> > > Right, no?
> > >
> > > --ruaok         Freezerburn! All else is only icing. -- Soul Coughing
> > >
> > > Robert Kaye -- [EMAIL PROTECTED]  http://moon.eorbit.net/~robert
> >
> >

Reply via email to