Possible Duplicate:
Does reading from stdin flush stdout?
C++ Standard guarantees that all data contained in the buffer will be printed before next call to std::cin. Like this:
#include <iostream> void bar() { int x; std::cout << "Enter an integer: "; /* 1 */ std::cin >> x; /* 2 */ } Because of this:
ISO/IEC 14882:2011
27.4.2 Narrow stream objects [narrow.stream.objects]
2 After the object cin is initialized, cin.tie() returns &cout. Its state is otherwise the same as required for basic_ios::init (27.5.5.2).
27.4.3 Wide stream objects [wide.stream.objects]
2 After the object wcin is initialized, wcin.tie() returns &wcout. Its state is otherwise the same as required for basic_ios::init (27.5.5.2).
But in C there are really no guarantees that everything contained in the stdout buffer will be printed before any attempt to stdin?
#include <stdio.h> void bar() { int x; printf("Enter an integer: "); /* 1 */ scanf("%d", &x); /* 2 */ } I know that stdout is line buffered but i don't want to put '\n' character in such situations. Is using fflush / fclose / etc is the only right way to get output right before input request in C?
tie, I'll be watching this :)