2009-12-18 13 views
6

में कुछ भी है या नहीं, यह जांचने का कोई तरीका है कि क्या सीन में कुछ है या नहीं? मैंने peek() की कोशिश की लेकिन यदि कोई चीज नहीं है() इनपुट के लिए इंतजार कर रहा है और यह वही नहीं है जो मैं चाहता हूं। धन्यवादसीन [सी ++]

उत्तर

5

आप कीस्ट्रोक पढ़ने के लिए सीन का उपयोग नहीं कर सकते हैं, और फिर कुछ भी उपलब्ध नहीं होने पर कुछ और करने के लिए आगे बढ़ें, जो मुझे लगता है कि आप क्या चाहते हैं। सीन एक बफर स्ट्रीम है और बस उस तरह से काम नहीं करता है। वास्तव में, मानक सी ++ का उपयोग करके ऐसा करने का कोई तरीका नहीं है - आपको ओएस विशिष्ट विशेषताओं का उपयोग करना होगा।

+0

आपके उत्तरों के लिए धन्यवाद दोस्तों। –

+0

मुझे लगता है कि मानक 'cin' कार्यान्वयन की अनुमति देता है जो ईओएफ राज्य में जाता है यदि कोई इनपुट इंतजार नहीं करता है। हालांकि मुझे पता है कि कंपाइलर्स के मानक पुस्तकालय (जिसमें एमएस वीएस, बोर्लैंड और जीसीसी शामिल हैं) इस तरह के कार्यान्वयन प्रदान नहीं करते हैं। (मुझे यकीन नहीं है क्योंकि मुझे नहीं पता कि स्ट्रीम स्वयं ईओएफ राज्य में बंद हो सकती है और यही है कि 'सीएन' को कीस्ट्रोक पर क्या करना होगा।) –

+1

ईओएफ राज्य पढ़ने में असफल रहा है - यह जीता जब तक आप पढ़ नहीं लेते तब तक सेट नहीं किया जाएगा। –

4

सी ++ धाराएं और स्ट्रीमबफ सिंक्रोनस हैं, जो तब तक ब्लॉक होते हैं जब तक पढ़ने के लिए पर्याप्त इनपुट नहीं होता है। स्ट्रीम को असीमित रूप से जांचने के लिए कोई पोर्टेबल तरीका नहीं है। एक अलग धागे से peek() कॉल करने पर विचार करें।

संबंधित मुद्दे