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