Zacytowałeś odpowiedź:
Bufory wyjściowe mogą być jawnie opróżniane, aby wymusić zapisanie bufora.
Oznacza to, że może być konieczne „opróżnienie” wyjścia, aby spowodować zapisanie go w źródłowym strumieniu (którym może być plik lub w wymienionych przykładach terminal).
Ogólnie rzecz biorąc, stdout / cout jest buforowane wierszowo: dane wyjściowe nie są wysyłane do systemu operacyjnego, dopóki nie napiszesz nowej linii lub jawnie nie opróżnisz bufora. Zaletą jest to, że coś podobnego std::cout << "Mouse moved (" << p.x << ", " << p.y << ")" << endl
powoduje tylko jeden zapis do bazowego „pliku” zamiast sześciu, co jest znacznie lepsze pod względem wydajności. Wadą jest to, że kod taki jak:
for (int i = 0; i < 5; i++) {
std::cout << ".";
sleep(1);
}
std::cout << "\n";
wyświetli .....
się natychmiast (dokładna sleep
implementacja, zobacz to pytanie ). W takich przypadkach będziesz potrzebować dodatkowego, << std::flush
aby upewnić się, że dane wyjściowe zostaną wyświetlone.
Czytanie cin
rzutów, cout
więc nie potrzebujesz do tego jawnego koloru:
std::string colour;
std::cout << "Enter your favourite colour: ";
std::cin >> colour;