मैं अभी भी सी ++ सीख रहा हूं, इसलिए कृपया मेरे साथ भालू। मैं बूस्ट फाइल सिस्टम पथ के चारों ओर एक साधारण रैपर लिख रहा हूं - मुझे लौटने वाले अस्थायी तारों के साथ अजीब समस्याएं आ रही हैं।अस्थायी std :: स्ट्रिंग जंक
typedef const char* CString;
typedef std::string String;
typedef boost::filesystem::path Path;
class FileReference {
public:
FileReference(const char* path) : mPath(path) {};
// returns a path
String path() const {
return mPath.string();
};
// returns a path a c string
CString c_str() const {
return mPath.string().c_str();
};
private:
Path mPath;
}
नीचे थोड़ा परीक्षण कोड के साथ
: यहाँ मेरी साधारण क्लास (इस सटीक नहीं है, लेकिन बहुत करीब) है
FileReference file("c:\\test.txt");
OutputDebugString(file.path().c_str()); // returns correctly c:\test.txt
OutputDebugString(file.c_str()); // returns junk (ie îþîþîþîþîþîþîþîþîþîþî.....)
मैं बहुत यकीन है कि यह temporaries से निपटने के लिए है, लेकिन मैं यह पता नहीं लगा सकता कि ऐसा क्यों होगा - सबकुछ ठीक से कॉपी नहीं करना चाहिए?
'आउटपुटडिबगस्ट्रिंग()' के लिए स्रोत क्या है? –
अपने स्वयं के 'सीएसटींग'' के 'टाइपेडफ' पर क्रिंग किया गया ... – Blindy
@OtotoAllmendinger - यह एक [विंडोज एपीआई] है (http://msdn.microsoft.com/en-us/library/windows/desktop/aa363362 (v = vs.85) .aspx) फ़ंक्शन। –