2011-02-09 14 views
12

इम जब मैं स्ट्रिंग द्विआधारी संख्या में पढ़ा है यह पता लगाने की स्ट्रिंग temp उल्टा करने के लिए कैसे की कोशिश कर रहाएक std :: स्ट्रिंग को कैसे उलट करें?

istream& operator >>(istream& dat1d, binary& b1)  
{    
    string temp; 

    dat1d >> temp;  
} 
+1

क्या आप "द्विआधारी संख्या में पढ़ा" द्वारा मतलब है? स्ट्रिंग में "1100110" की तरह कुछ होगा? क्या आप डिस्क से बाइनरी फाइल पढ़ रहे हैं? –

उत्तर

19

प्रयास करें

string reversed(temp.rbegin(), temp.rend()); 

संपादित: के रूप में अनुरोध विस्तार से चर्चा करते।

string::rbegin() और string::rend(), जिसके लिए खड़े "रिवर्स शुरू" और "रिवर्स अंत" क्रमश: रिवर्स iterators लौट स्ट्रिंग में। ये ("अगला" तत्व के लिए अग्रिम करने के लिए एक तत्व के लिए भिन्नता को operator*, तार का एक चरित्र यानी, और operator++) मानक इटरेटर इंटरफ़ेस समर्थन वस्तुओं, जैसे कि rbegin() अंक स्ट्रिंग के अंतिम वर्ण के लिए, करने के लिए rend() अंक हैं पहले एक, और इटरेटर को आगे बढ़ाने पिछले चरित्र के लिए यह चाल (यह यह एक रिवर्स इटरेटर बनाता है क्या है)।

अंत में, निर्माता हम में इन iterators से गुजर रहे हैं प्रपत्र की एक स्ट्रिंग निर्माता है:

template <typename Iterator> 
string(Iterator first, Iterator last); 

जो किसी भी प्रकार के पात्रों की एक सीमा को दर्शाने के iterators की एक जोड़ी को स्वीकार करता है, और है कि करने के लिए स्ट्रिंग initializes पात्रों की रेंज

+0

आप विस्तार से बता सकते हैं कृपया समाधान –

+0

@MinkeshJain: हो गया है, कृपया मेरे संपादन में देखते हैं। – HighCommander4

29

मुझे यकीन है कि आप एक स्ट्रिंग है द्विआधारी संख्या में शामिल है से क्या मतलब है नहीं कर रहा हूँ। लेकिन एक स्ट्रिंग (या किसी भी एसटीएल-संगत कंटेनर) को उलट करने के लिए, आप std::reverse() का उपयोग कर सकते हैं। std::reverse() जगह में चल रही है, तो आप पहली स्ट्रिंग की एक प्रतिलिपि बनाना चाहते हो सकता है:

#include <algorithm> 
#include <iostream> 
#include <string> 

int main() 
{ 
    std::string foo("foo"); 
    std::string copy(foo); 
    std::cout << foo << '\n' << copy << '\n'; 

    std::reverse(copy.begin(), copy.end()); 
    std::cout << foo << '\n' << copy << '\n'; 
} 
+0

यह एक शून्य कार्य होना चाहिए क्योंकि यह मान –

+0

'std :: रिवर्स' ** ** **' void' फ़ंक्शन नहीं है: http://en.cppreference.com/w/cpp/algorithm/reverse। –

+0

@MaxLybbert हाँ, ** हालांकि **, 'मुख्य()' के रूप में यह नहीं है 'void' कार्यान्वित किया जाता है और कोई मान चाहिए। यही है @ विल्हेल्म बाहर निकलने की कोशिश कर रहा था। – karlphillip

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