将LPCWSTR与另一个字符串组合在一起

时间:2014-06-29 08:34:46

标签: c++

我有一个需要保存文件的类,构造函数获取一个名为fullPath的LPWSTR,然后我尝试这样做(curPath是一个LPCWSTR类变量):

curPath = (std::wstring(fullPath) + L".ip").c_str();

但最终却是胡言乱语。同时这也有效:

auto cp = std::wstring(fullPath) + L".ip";
curPath = cs.c_str();

虽然在我看来他们应该基本上做同样的事情。那是什么?

1 个答案:

答案 0 :(得分:2)

表达式(std::wstring(fullPath) + L".ip")创建的临时std :: wstring将在计算表达式后销毁。 使用此临时的内部存储器(由c_str公开)是未定义的行为和错误。

在第二个表达式中,将结果保存在auto变量cp中。因此,在当前范围结束之前,您可以使用变量cp的内部存储器。一旦范围结束,cp将被销毁并释放其内存。