为什么&(std :: to_wstring())返回一个空字符串?

时间:2014-02-25 18:21:17

标签: c++ windows-runtime

我正在尝试使用适用于Windows的C ++ / CX应用中的int函数将wstring*转换为std::to_wstring

以下内容不起作用:

wstring* turn = &(to_wstring(50));               //the value of *turn is ""

但是这样做:

wstring tu = to_wstring(50);
wstring* turn = &tu;                             //the value of *turn is "50"

有人可以解释原因吗?两个代码片段不应该显示完全相同的行为吗?

1 个答案:

答案 0 :(得分:2)

to_wstring(50)是暂时的。临时表在完整表达结束时被破坏(,就在分号之后)。因此,在第一个代码段运行后,turn指向一些不再包含有效std::wstring的内存,因为它已被销毁。

在第二个代码段中,临时to_wstring(50)复制到变量tu中。暂时被销毁,但tu不是,因为它仍在范围内。