C++ std::ostringstream至LPCSTR?

C++ std::ostringstream至LPCSTR?,c++,visual-studio,winapi,std,lpcstr,C++,Visual Studio,Winapi,Std,Lpcstr,如何将std::ostringstream转换为LPCSTR std::ostringstream oss; [...] LPCSTR result = oss.str(); 结果:错误:不存在从“std::basic_string”到“LPCSTR”的合适转换函数,如下所示: std::string str = oss.str(); LPCSTR cstr = str.c_str(); 请注意,您的cstr仅在下次修改str之前保持有效。例如,您不能从函数返回cstr,因为str是一个离开

如何将
std::ostringstream
转换为
LPCSTR

std::ostringstream oss;
[...]
LPCSTR result = oss.str();
结果:
错误:不存在从“std::basic_string”到“LPCSTR”的合适转换函数,如下所示:

std::string str = oss.str();
LPCSTR cstr = str.c_str();
请注意,您的
cstr
仅在下次修改
str
之前保持有效。例如,您不能从函数返回
cstr
,因为
str
是一个离开作用域的局部变量


不要从此函数返回
LPCSTR
,而是返回
std::string
。如果返回
LPCSTR
,则可以避免处理生存期问题。如果返回了
LPCSTR
,则必须分配内存并确保解除分配。正是你不想在C++代码中做的事情。因此,返回
std::string
并在调用Windows API函数的位置调用该对象上的
c_str()

返回它正是我计划要做的,那么我该怎么做呢?不要这样做。它会让你终生头疼。返回一个
std::string
并在需要调用winapi函数的地方调用
c_str()
。返回对本地函数的引用不会有好结果。不要分发死牛(或一般物品)。@IInspectable抱歉,你说得很对。评论和回答已编辑。