2012-09-03 21 views
18

क्या std::ios_base::ate के बिंदु (std::ios_base::app के अलावा अन्य, उदाहरण के लिए) और std::ios_base::trunc (अन्य std::ios_base::out से, उदाहरण के लिए)?std :: ios_base :: खाया और std :: ios_base :: TRUNC

और क्या मुझे के बजाय std::ios_base::smth लिखना चाहिए?

+1

'std :: ios_base :: in' और' std :: ios :: में होना चाहिए समान, यह आप पर निर्भर है। – oldrinb

+0

@veer हाँ वे हैं, साथ ही साथ :: ios_base :: descendant :: में :) – Geoffroy

उत्तर

16

std :: ios_base :: खाया अंत में पाठ के अंत में कर्सर भी स्थित है, जबकि std :: ios_base_app पाठ संलग्न कर देता है (एक लिखने आपरेशन के साथ), लेकिन तब भी आप शुरुआत :)

से पढ़ सकते हैं

std :: ios_base :: trunc फ़ाइल को छोटा कर देता है, इसलिए यह खाली हो जाता है, जबकि std :: ios_base :: बस निर्दिष्ट करें कि आप स्ट्रीम को लिखना चाहते हैं।

मैं वर्तमान में मानक उद्धृत नहीं कर सकता (मेरे टैबलेट पर और एक्रोबैट रीडर मेटल प्रतिलिपि नहीं देगा) लेकिन आईएसओ 14882: 1 99 8 से अनुच्छेद 27.4.2.1.4 से जो जानकारी आप लिंक पर देख सकते हैं वह लगभग सटीक है : द्वारा धारा के अंत में

std::ios_base::app = append 

संलग्न

std::ios_base::ate = At The End 

खोलें "की तलाश [ing] प्रत्येक लिखने से पहले समाप्त करने के लिए" और immed की तलाश: http://cplusplus.com/reference/iostream/ios_base/openmode/

सारांश में iately उद्घाटन के बाद अंत में

std::ios_base::binary = binary 

के रूप में पाठ को पढ़ने मोड

राइट मोड में
std::ios_base::out = output 

ओपन में

std::ios_base::in = input 

खुला विरोध किया बाइनरी में कार्यवाही करें

std::ios_base::trunc = truncate 

खुली धारा को मिटा दें आईएनजी। ताकि आप/पढ़ने में एक स्ट्रीम को खोलने के साथ अंत में द्विआधारी लिख सकते हैं

ये मान, बस झंडे हैं:

std::ios_base::in | std::ios_base::out | std::ios_base::ate | std::ios_base::binary 

उन मूल्यों का उपयोग करने का तरीका संबंध में, यह है के रूप में आप चाहते हैं। उन्हें std::ios_base कक्षा में सार्वजनिक स्थिर फ़ील्ड के रूप में घोषित किया गया है (27.4.2 देखें) इस प्रकार std::ios::ate या cout.binary जैसे कुछ भी उपयोग करना संभव है!


अंक जहां ध्यान रखना चाहिए कि std::ios_base::ate संकेत नहीं करता है std::ios_base::app है और न ही std::ios_base::out तात्पर्य std::ios_base::trunc करता है। प्रत्येक फ़ील्ड का एक अलग अर्थ होता है, और उपयोग का एक अलग मामला है, हालांकि उनमें से अधिकतर अकेले उपयोग नहीं किए जा सकते हैं :)

+0

लेकिन std :: ios_base :: बाहर फ़ाइल में डेटा को भी साफ़ करता है, नहीं? क्या आप मुझे एक उदाहरण दे सकते हैं जहां std :: ios_base :: बाहर फ़ाइल को साफ़ नहीं करते हैं? – FrozenHeart

+0

यहां से: http: // cplusplus।कॉम/संदर्भ/iostream/ios_base/openmode/आपको प्रत्येक मान की परिभाषा मिलती है। इसके अलावा, यह उत्तर @ ver की टिप्पणी std :: ios_base :: in और std :: ios :: – Geoffroy

+0

में और "आप अभी भी शुरुआत से पढ़ सकते हैं" के द्वारा क्या मतलब है? क्या आप मुझे एक उदाहरण दे सकते हैं, कृपया? – FrozenHeart

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