gpt4 book ai didi

C++:从 wstringstream 获取 LPCWSTR?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:17:23 28 4
gpt4 key购买 nike

如果我有一个 wstringstream,并且我想获取它的 .str() 数据作为 LPCWSTR,我该怎么做?

最佳答案

你可以做 wstringstream.str().c_str() as DeadMG writes .但是,该调用的结果仅在表达式的生命周期结束之前有效,这是其中的一部分。

具体来说,这个

const LPCWSTR p = wss.str().c_str();
f(p); // kaboom!

不会工作,因为wstringstream.str() 返回一个临时对象和.c_str()返回指向该对象的指针,并且在分配结束时该临时对象将被破坏。

你可以做的是

f(wss.str().c_str()); // fine if f() doesn't try to keep the pointer

const std::wstring& wstr = wss.str(); // extends lifetime of temporary 
const LPCWSTR p = wstr.c_str();
f(p); // fine, too

因为绑定(bind)到 const 引用的临时对象的生命周期将延长到引用的生命周期。

关于C++:从 wstringstream 获取 LPCWSTR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2991740/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com