Šta je novo?

C++: istream problem

Caslav

Čuven
Učlanjen(a)
29.12.2001
Poruke
138
Poena
619
Ima li ko ideju kako da procitam sta se nalazi dalje u istreamu, a da ga pritom ne promenim? Ako sam lose objasnio, evo na primeru. Zelim da ovo parce koda:

cin >> a;
f(cin); // funkcija koja nesto cita iz istreama cin
cin >> b;

ima u opstem slucaju isti efekat, sa stanovista promenljivih a i b, kao da pise samo:

cin >> a;
cin >> b;
 
Problem je sto gomila knjiga koje nas uce nekom programiranju govori o ostream i istream klasama i svima je to otprilike jasno sve dok ne natrcite na neki problemcic ovog tipa. Mnogo toga moze da se nauci proucavanjem iostream.h u include diru.
Elem, ako sam ja ukapirao sta ti treba, onda bi mogao otprilike ovako da uradis:

[code:1]
void fja(istream& is)
{
int duzina=(is.rdbuf())->in_avail();
int *c=new int[duzina];
cout<<"U ostatku bafera je:";
for (int i=0; i<duzina; i++)
c=is.get(), cout<<(char)c;
for (i=duzina-1; i>0; i--) is.putback(c);
}
void main()
{
char a,b;
cout<<"Unesi A i B:"<<endl; cin>>a;
fja(cin);
cin>>b;
cout<<"A="<<a<<" B="<<b<<endl;
};
[/code:1]

Izlaz ovog programa izgleda ovako:
Unesi A i B:
Q W E R T
U ostatku bafera je: W E R T
A=Q B=W - znaci kao da ove fje nema


Nadam se da je to ono sto si hteo :D
Moj savet ti je da napravis klasu koju ces izvesti iz recimo streambuf (ovde je: streambuf *ios::rdbuf() ) i u kojoj ces moci da imas pristup protected fjama clanicama i onda mozes da nastelujes sve kako ti je volja.

;)
 
Tacno ovo mi je trebalo, zahvaljujem.
 
Nazad
Vrh Dno