Вы можете сделать wstringstream.str().c_str()
, как DeadMG пишет . Однако результат этого вызова действителен только до конца времени жизни выражения, частью которого он является.
В частности, это
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
потому что временные объекты, связанные с const
ссылкой, будут иметь время жизни увеличенное до времени жизни ссылки.