Temporal std :: cadenas devolviendo basura
Todavía estoy aprendiendo c ++, así que por favor tengan paciencia conmigo. Estoy escribiendo un envoltorio simple para impulsar las rutas del sistema de archivos. Tengo problemas extraños al devolver cadenas temporales. Aquí está mi clase simple (esto no es exacto, pero está bastante cerca):
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;
}
Con el pequeño código de prueba a continuación:
FileReference file("c:\\test.txt");
OutputDebugString(file.path().c_str()); // returns correctly c:\test.txt
OutputDebugString(file.c_str()); // returns junk (ie îþîþîþîþîþîþîþîþîþîþî.....)
Estoy bastante seguro de que esto tiene que ver con los temporales, pero no puedo entender por qué sería eso, ¿no debería estar todo copiando correctamente?