我還在學習C++,所以請耐心等待。我在boost文件系統路徑上寫了一個簡單的包裝 - 我在返回臨時字符串時遇到了一些奇怪的問題。這是我簡單的類(這是不準確的,但相當接近):臨時std :: string返回垃圾
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 îþîþîþîþîþîþîþîþîþîþî.....)
我敢肯定,這必須處理臨時工,但我不知道爲什麼會這樣 - 不是所有的東西都能正確複製?
'OutputDebugString()'的來源是什麼? – 2012-07-06 19:28:08
在'typedef'''ing你自己的'CString' ...上衝刺... – Blindy 2012-07-06 19:28:33
@OttoAllmendinger - 它是[Windows API](http://msdn.microsoft.com/en-us/library/windows/desktop/aa363362( v = vs.85).aspx)函數。 – 2012-07-06 19:30:41