9 NİSAN 2011, CUMARTESİ
Neden iostream::bir döngü durumu yanlış kabul içinde eof?
Ben sadece this bir yorum bir döngü durumu iostream::eof
kullandığını söyleyerek cevap buldu "neredeyse kesinlikle yanlış". Ben genellikle EOF için örtülü olarak denetler sanırım while(cin>>n)
- gibi bir şey kullanmak, neden eof kontrol açıkça yanlış iostream::eof
kullanıyor?
Nasıl C scanf("...",...)!=EOF
sık sık herhangi bir sorun ile kullanın) kullanarak farklı mı?
CEVAP
9 NİSAN 2011, CUMARTESİ
iostream::eof
tek set olacak çünküsonraakışın sonuna okuma. Yokdeğilbir sonraki okuma stream sonu olacağını gösteriyor.
Bu (ve read akışın sonunda gelecek o zaman farz) göz önünde bulundurun:
while(!inStream.eof()){
int data;
// yay, not end of stream yet, now read ...
inStream >> data;
// oh crap, now we read the end and *only* now the eof bit will be set (as well as the fail bit)
// do stuff with (now uninitialized) data
}
Bu karşı
int data;
while(inStream >> data){
// when we land here, we can be sure that the read was successful.
// if it wasn't, the returned stream from operator>> would be converted to false
// and the loop wouldn't even be entered
// do stuff with correctly initialized data (hopefully)
}
Ve ikinci soru: Çünkü
if(scanf("...",...)!=EOF)
aynı gibi
if(!(inStream >> data).eof())
vedeğilaynı gibi
if(!inStream.eof())
inFile >> data
Bunu Paylaş:
Neden benim program tam olarak 8192 el...
Neden bir döngü iki döngü daha yavaş g...
Neden &; ad std quot;" kötü olara...
C ve C her ikisi içinde geçerli bir ko...
Neden Java Vector sınıfı eski veya kul...