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.