Bu, döngüye yerleştirilen dizeyi yazdırmaz. Program sys/types.h başlık dosyası ile G ++ yardımıyla yazılmıştırÇıkarım çıktısı neden hemen görünmüyor?
for(int i=0;i<9;i++)
{
cout<<"||";
sleep(1);
}
Bu, döngüye yerleştirilen dizeyi yazdırmaz. Program sys/types.h başlık dosyası ile G ++ yardımıyla yazılmıştırÇıkarım çıktısı neden hemen görünmüyor?
for(int i=0;i<9;i++)
{
cout<<"||";
sleep(1);
}
Ne büyük olasılıkla burada görüyoruz tamponlu edilen çıktının bir etkisi de dahildir. Genel olarak, çıktı aslında std::endl
kullanılıncaya kadar yazılmayacaktır. Kaputun std::endl
altında
for(int i=0;i<9;i++)
{
// Flushes and adds a newline
cout<< "||" << endl;
sleep(1);
}
satır karakteri eklenerek ve daha sonra konsola çıktı zorlamak için
std::flush
kullanıyor. Aynı etkinleşir
for(int i=0;i<9;i++)
{
cout << "||" << flush;
sleep(1);
}
Belki de endl'in hem bir satır sonu eklediğini ve hem de bir floş dediğimi kesinleştirmelisiniz. Bir '\ n' tek başına yeterli olmalıdır. – Klaim
* Genel olarak çıktı, yeni bir satır yazdırılıncaya kadar ** yazılmayacak **. * .. Bu doğru değil. Bir satırsonu bu garantiyi vermez. Std :: endl'nin arabelleğe yeni bir satır eklediğine dikkat edin ** ve ** daha sonra temizleyin. – Nawaz
std :: endl çalışmasının nedeni satır sonu öğelerinin (Windows için * nix, \ r \ n için \ n) ve bir std :: floş ekler. Anahtar bölüm std :: floş, ancak std :: endl kesinlikle çalışıyor. –
Sen çıkışını kızarma değiliz almak için doğrudan std::flush
kullanabilirsiniz.
std::cout << "||" << std::flush;
'cout'u deneyin << "||" << endl; ' –
Hata gönderebilir misiniz? –