Strumienie cin oraz cout są buforowane, co oznacza, że dane nie są wypisywane/wczytywane za każdym razem, gdy sobie tego zażyczymy, lecz hurtem – gdy danych się troche nazbiera. Powoduje to nieprawidłowe współdziałanie funkcji z stdio ze strumieniami, gdyż używając printf/scanf dane są wypisywane od razu. Może dojść do sytuacji, gdy np. przeplatasz wyświetlanie danych na ekranie za pomocą strumieni i funkcji z stdio, że dane będą wypisywane w niepoprawenej kolejności.
Jeżeli chcesz, aby nie było problemów, na początku programu dodaj linijkę:
1 |
ios_base::sync_with_stdio(0); |
Dzięki czemu dane będą wypisywane przez strumienie od razu, w każdym momencie, gdy sobie tego zażyczysz. Tracimy jednak tym sposobem szybkość strumieni.
Autor: Spine