पर कॉल करने से पहले डेटा उपलब्धता की जांच करना मैं std::getline
का उपयोग कर स्ट्रीम से कुछ डेटा पढ़ना चाहता हूं। std::cin
का उपयोग कर नमूना के नीचे।std :: getline
std::string line;
std::getline(std::cin, line);
यह एक अवरुद्ध कार्य है यानी अगर इसे पढ़ने के लिए कोई डेटा या रेखा नहीं है तो इसे निष्पादन अवरुद्ध करता है।
क्या आप जानते हैं कि std::getline
पर कॉल करने से पहले डेटा उपलब्धता की जांच करने के लिए कोई फ़ंक्शन मौजूद है या नहीं? मैं ब्लॉक नहीं करना चाहता।
मैं कैसे जांच सकता हूं कि स्ट्रीम बफर std::getline
पर सफल कॉल के लिए मान्य डेटा से भरा है या नहीं?
जो भी नीचे
if(dataAvailableInStream())
{
std::string line;
std::getline(std::cin, line);
}
आप कहते हैं कि आप ब्लॉक नहीं करना चाहते हैं, लेकिन आपका उदाहरण std :: cin का उपयोग करता है। हमें बताएं कि आप क्या हासिल करने की कोशिश कर रहे हैं और शायद हम अपने उत्तर को अधिक सहायक होने के लिए स्पष्ट कर सकते हैं। – nathan
हाय सब! मेरे पास अवरुद्ध आईट्रीम है। विशिष्ट में मैं प्रक्रियाओं के लिए POCO लाइब्रेरी का उपयोग कर रहा हूं और मैं POCO :: PipeInputStream से पढ़ना चाहता हूं। मेरा प्रश्न था: 1. मुझे पता है कि ब्लॉकिंग स्ट्रीम के साथ std :: getline को कॉल करने से कोई डेटा उपलब्ध नहीं होगा 2. डेटा उपलब्ध है या नहीं, यह जांचने के लिए कॉल करने के लिए कौन सा फ़ंक्शन 3. यदि कोई डेटा उपलब्ध नहीं है तो मैं हूं क्योंकि यह ब्लॉक –
(यह अभी भी खोज परिणामों में पता चलता है।) एसटीडी कॉल करने के लिए नहीं जा रहा :: getline मेरा उत्तर यहाँ देखें: http://stackoverflow.com/a/42264216/1599699 – Andrew