c++ - how do i write an overload operator>> function of class string? -


  वर्ग स्ट्रिंग {सार्वजनिक: दोस्त इस्ट्रीम & amp; ऑपरेटर & gt; & gt; (इस्ट्रीम एंड है, स्ट्रिंग एंड स्ट्रिंग); निजी: चार * एम_डेटा; }; Int main () {string str; freopen ( "in.txt", "आर", stdin); जबकि (cin & gt; & gt; str) {cout & lt; & LT; Str & lt; & LT; endl; } वापसी 0; }  

इनटैट की सामग्री हैं:

  asdfsfgfdgdfg  

अधिभार समारोह में, मैं < कोड> is.get () उन चेरेटर को एक-एक करके पढ़ने के लिए, लेकिन जब प्रोग्राम खत्म होता है तो चक्र बाहर निकलता है, इसका मतलब है कि काऊट नहीं चलेगा। दूसरी ओर, मैं इसके बजाय getchar () कोशिश करता हूं, लेकिन यह सर्कल से बाहर नहीं निकल सकता।

प्रश्न: क्या इस फ़ंक्शन के प्रति मेरे विचार में कोई गलत है? या पूरा करने का एक और बेहतर तरीका है Thx:)

======================================== ================================================= नया संपादित करें: यहां मेरा कोड: @ आर्टम बार्जर कोड विवरण

  #include & lt; iostream & gt; नेमस्पेस स्ट्र {वर्ग स्ट्रिंग {सार्वजनिक: स्ट्रिंग (): कश्मीर (0) {} मित्र बूल ऑपरेटर & gt; & gt; (Std :: istream & amp; है, स्ट्रिंग & amp; str) {int size = 100; चार मीटर; यदि ((m = getchar ()) & amp; amp; एम == -1) वापसी झूठी; Str.m_data = नया चार [आकार]; करें {if (str.k == आकार) {आकार * = 2; Char * temp = नया चार [आकार]; के लिए (int j = 0; j & lt; str.k; ++ j) {char * del = str.m_data; Temp [j] = * str.m_data ++; डेल हटाएं; } Str.m_data = temp; Temp = NULL; } Str.m_data [str.k ++] = m; } जबकि ((m = getchar ()) & amp; m! = -1); वापस सच; } दोस्त शून्य ऑपरेटर & lt; & lt; (मानक :: ओस्ट्रीम एंड ओएस, स्ट्रिंग एंड स्ट्रिंग) {OS & lt; & lt; str.m_data; Str.k = 0; हटाएं [] str.m_data; } निजी: चार * m_data; Int k; }; } नामस्थान स्ट्रिंग का उपयोग कर; Int main () {string str; जबकि (std :: cin & gt; & gt; str) {std :: cout & lt; & lt; str; } वापसी 0; }  

अभी भी

  करें {} की सामग्री में कुछ समस्या है जबकि (); शायद आप अपने कोड को इस तरह से लिख सकते हैं, जो आपकी समस्या को ठीक कर लेना चाहिए:  

P>

  bool सफलता = सच; जबकि (सफलता) {सफलता = सीआईएन & gt; str; Cout & lt; & lt; str; }  

हालांकि, मुझे समझ में नहीं आता क्यों आप अभी भी cout आगे बढ़ना चाहते हैं - अगर cin कॉल नहीं किया है सफल होने पर, आप केवल स्ट्रिंग की पुरानी सामग्री को प्रिंट कर देंगे - आप इसे कहीं भी साफ़ नहीं करते हैं (जब तक कि आप ऐसा अन्य कोड में नहीं करते जो आपने यहां पोस्ट नहीं किया है)।


Comments

Popular posts from this blog

c++ - Linux and clipboard -

Visual Studio 2005: How to speed up builds when a VSMDI is open? -

booting ubuntu from usb using virtualbox -