如何将std::ostringstream
转换为LPCSTR
std::ostringstream oss;
[...]
LPCSTR result = oss.str();
Result: Error: No suitable conversion function from "std::basic_string<char, std::char_traits<char>, std::allocator<char>>" to "LPCSTR" exists
像这样:
std::string str = oss.str();
LPCSTR cstr = str.c_str();
注意,您的cstr
仅在str
的下一次修改之前保持有效。例如,你不能从函数返回cstr
,因为str
是一个左作用域的局部变量。
从这个函数返回LPCSTR
,而不是返回std::string
。如果返回LPCSTR
,这样可以避免处理生命周期问题。如果您返回LPCSTR
,则必须分配内存并确保已将其释放。这正是你不想在c++代码中做的事情。因此,在调用Windows API函数时,返回std::string
并在该对象上调用c_str()
。