Nic*_*ner 1 c++ string unicode
如果我有wstringstream,并且我想将其.str()数据作为LPCWSTR获取,我该怎么做?
sbi*_*sbi 12
你可以wstringstream.str().c_str() 像DeadMG写的那样做.但是,该调用的结果仅在表达式的生命周期结束时才有效,这是其中的一部分.
具体来说,这个
const LPCWSTR p = wss.str().c_str();
f(p); // kaboom!
Run Code Online (Sandbox Code Playgroud)
将无法工作,因为wstringstream.str()返回一个临时对象并.c_str()返回指向该对象的指针,并在赋值结束时将销毁临时对象.
你可以做的也是
f(wss.str().c_str()); // fine if f() doesn't try to keep the pointer
Run Code Online (Sandbox Code Playgroud)
要么
const std::wstring& wstr = wss.str(); // extends lifetime of temporary
const LPCWSTR p = wstr.c_str();
f(p); // fine, too
Run Code Online (Sandbox Code Playgroud)
因为绑定到const引用的临时对象将使其生命周期延长到引用的生命周期.