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抱歉,你说得很对。评论和回答已编辑。