c++ - Strange stack/string behaviour -


  स्टैक & lt; char & gt; stck; स्ट्रिंग स्ट्र; stck.push ( '0'); str.append ( "परीक्षण:"); // परीक्षा: सीओएटी & एलटी; & lt; Str & lt; & lt; endl; str.append (& amp; stck.top ()); // परीक्षा: 0═══════════════¤¤¤¤▌▌▌▌, ╘╥XЕ┤ cout & lt; & lt; Str & lt; & lt; endl;  

यह क्यों हो रहा है?

मासीज हवल सही है क्यों आप अवांछित व्यवहार प्राप्त कर रहे हैं।

आप चाहते हैं कि व्यवहार पाने के लिए, आपको चरित्र को जोड़ना होगा, इसके लिए कोई संकेतक नहीं। आप (कलीम के जवाब में आपकी टिप्पणी में) कहने में सही हैं कि std :: string :: add का कोई ओवरराइड नहीं है जो सिर्फ एक char लेता है। हालांकि, एक ओवरराइड std :: string :: addend (std :: size_t, char) है, जो चरित्र (दूसरी तर्क) को एक निश्चित संख्या (पहली तर्क) जोड़ता है।

तो लिखने का सही तरीका जो आप चाहते हैं वह होगा:

  str.append (1, stck.top ()); / / <  

शीर्ष पर स्थित वर्ण का एक प्रति जोड़ें या वैकल्पिक रूप से, केवल + = ऑपरेटर के लिए अधिभार का उपयोग करें, जो < कोड> चार :

  str + = stck.top ();  

Comments