क्यों मैं कठबोली का उपयोग नहीं कर सकता :: एसटीडी के साथ कॉपी :: स्ट्रिंग दूसरे स्ट्रिंग के लिए :: स्ट्रिंग? [डुप्लिकेट]

Aug 16 2020

निम्नलिखित कोड एक खाली स्ट्रिंग प्रिंट करता है और मैं यह समझने में असमर्थ हूं कि ऐसा क्यों है?

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

int main()
{
    std::string s="hello";
    std::string r;
    std::copy(s.rbegin(),s.rend(), r.begin());
    std::cout<<r;
    return 0;
}

जवाब

5 songyuanyao Aug 16 2020 at 20:46

समस्या rएक खाली है std::string, इसमें कोई charएस नहीं है । std::copyके charबाद से कॉपी-असाइन करने की कोशिश कर रहा है r.begin(), जो यूबी की ओर जाता है।

आप rपहले से 5 तत्व युक्त बना सकते हैं ।

std::string r(5, '\0');

या

std::string r;
r.resize(5);

या उपयोग करें std::back_inserter

std::string r;
std::copy(s.rbegin(),s.rend(), std::back_inserter(r));