C++ can native type char hold End of File character? -


शीर्षक बहुत आत्म व्याख्यात्मक है।

  char c = std :: cin.peek ();  

/ Div>

संक्षिप्त उत्तर: नहीं char के बजाय int का उपयोग करें। < / P>

थोड़ा लंबा उत्तर: नहीं। यदि आप एक फंक्शन से ईओएफ या तो एक चरित्र या मूल्य प्राप्त कर सकते हैं, जैसे कि सी getchar और C ++ के झांकना , स्पष्ट रूप से एक सामान्य char वेरिएबल दोनों वैध वर्ण और मूल्य EOF को पकड़ने के लिए पर्याप्त नहीं होगा।

अब भी उत्तर: यह निर्भर करता है, लेकिन यह कभी भी काम नहीं करेगा जैसा कि आप उम्मीद कर सकते हैं।

सी और सी ++ में तीन वर्ण प्रकार हैं ("व्यापक" प्रकारों को छोड़कर): char , हस्ताक्षरित वर्ण और अहस्ताक्षरित चार ईओएफ एक नकारात्मक पूर्णांक है, आम तौर पर -1, तो आप स्पष्ट रूप से इसे एक अहस्ताक्षरित चार में या एक सादे चार में संसाधित नहीं किया जा सकता जो कि अहस्ताक्षरित नहीं है। यह मानते हुए कि आपका सिस्टम 8-बिट वर्ण (जो लगभग सभी करता है) का उपयोग करता है, EOF को 255 में (दशमलव) रूपांतरित किया जाएगा, और आपका प्रोग्राम काम नहीं करेगा।

लेकिन यदि आपका चार प्रकार पर हस्ताक्षर किए गए हैं, या यदि आप हस्ताक्षरित वर्ण प्रकार का उपयोग करते हैं, तो हाँ, आप इसमें -1 स्टोर कर सकते हैं, हां, यह EOF < / strong>। लेकिन तब क्या होता है जब आप फ़ाइल से 255 कोड वाले चरित्र पढ़ते हैं? इसे -1 के रूप में परिभाषित किया जाएगा, अर्थात, EOF (यह मानते हुए कि आपका कार्यान्वयन -1) तो आपका कोड फ़ाइल के अंत में न केवल पढ़ना बंद कर देगा, लेकिन जैसे ही उसे 255 वर्ण मिलेगा।


Comments

Popular posts from this blog

c# - How to capture HTTP packet with SharpPcap -

jquery - SimpleModal Confirm fails to submit form -

php - Multiple Select with Explode: only returns the word "Array" -