संभव डुप्लिकेट:
Does reading from stdin flush stdout?stdout और stdin रिश्तों
सी ++ स्टैंडर्ड गारंटी देता है कि सभी डेटा बफर में निहित std के बगल में कॉल :: CIN से पहले प्रिंट किया जाएगा। इस तरह:
#include <iostream>
void bar()
{
int x;
std::cout << "Enter an integer: "; /* 1 */
std::cin >> x; /* 2 */
}
इस वजह से
:
आईएसओ/आईईसी 14882: 2011
27.4.2 संकीर्ण धारा वस्तुओं [narrow.stream.objects]
2 ऑब्जेक्ट cin प्रारंभ होने के बाद, cin.tie() & cout देता है। इसका राज्य अन्यथा मूलभूत_ओएस :: init (27.5.5.2) के लिए आवश्यक है।
27.4.3 वाइड धारा [wide.stream.objects]
2 के बाद वस्तु wcin आरंभ नहीं हो जाता, वस्तुओं wcin.tie() & wcout देता है। इसकी स्थिति अन्यथा basic_ios :: init (27.5.5.2) के लिए आवश्यक है।
लेकिन सी में वहाँ वास्तव में कोई गारंटी है कि सब कुछ stdout बफर में निहित stdin करने का प्रयास करने से पहले प्रिंट किया जाएगा रहे हैं?
#include <stdio.h>
void bar()
{
int x;
printf("Enter an integer: "); /* 1 */
scanf("%d", &x); /* 2 */
}
मुझे पता है कि stdout लाइन buffered है, लेकिन मैं ऐसी परिस्थितियों में '\ n' चरित्र नहीं रखना चाहता हूं। सी में इनपुट अनुरोध से पहले आउटपुट प्राप्त करने का एकमात्र सही तरीका है fflush/fclose/etc का उपयोग करना?
हैं (और नहीं सी ++ में stdio उपयोग के बारे में), यह सी और नहीं सी ++ के साथ टैग करें। – Mat
मैंने टैग सी जोड़ा है लेकिन यह प्रश्न सी और सी ++ आईओ तुलना के बारे में है, इसलिए मैं सी ++ टैग भी रखना चाहता हूं। – FrozenHeart
ओह, यह थोड़ी देर हो गया है क्योंकि यहां एक प्रश्न ने मेरी रुचि बढ़ा दी है। मैंने वास्तव में 'टाई' पर ध्यान नहीं दिया था, मैं इसे देख लूंगा :) –