Kuten C- kielen sprintf ja scanf käsittelee merkkijonoja, voidaan myös tietovirrat ohjata merkkijonoihin:
/* ARRAYIO.CPP */
#include <stdio.h>
#include <iostream.h>
#include <strstream.h>
int main(void)
{
int i=5; double d=6.7; char *jono = "Kissa puussa"; char s[80];
char iobuf[255];
sprintf(iobuf,"i=%d d=%lg jono=%s\n",i,d,jono);
printf(iobuf);
ostrstream ojono(iobuf,sizeof(iobuf));
ojono << "i=" << i <<" d=" << d << " jono=" <<jono << endl;
cout << iobuf;
i=0; d=0; s[0]=0;
sscanf(iobuf,"i=%d d=%lf jono=%s",&i,&d,s);
printf("i=%d d=%lg jono=%s\n",i,d,s);
i=0; d=0; s[0]=0;
istrstream ijono(iobuf);
ijono.ignore(100,'='); ijono >> i;
ijono.ignore(100,'='); ijono >> d;
ijono.ignore(100,'='); ijono.getline(s,sizeof(s));
// ijono >> s; toimisi samoin kuin scanf, eli lopettaisi välilyöntiin
cout << "i=" << i <<" d=" << d << " jono=" <<s << endl;
return 0;
}
Edellä cin.getline
toimisi tietysti standardi io:lle ja on selvästi
scanf("%s",s):ää turvallisempi ja parempi, koska myös
välilyönnillisiä jonoja voidaan lukea.