Prev Next Up Title Contents Index

Tietovirrat ja merkkijonot

Kuten C- kielen sprintf ja scanf käsittelee merkkijonoja, voidaan myös tietovirrat ohjata merkkijonoihin:

arrayio.cpp - tietovirrat ja merkkijonot

	/* 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.


Prev Next Up Title Contents Index