如何将 a 转换std::ostringstream
为LPCSTR
?
std::ostringstream oss;
[...]
LPCSTR result = oss.str();
结果:Error: No suitable conversion function from "std::basic_string<char, std::char_traits<char>, std::allocator<char>>" to "LPCSTR" exists
如何将 a 转换std::ostringstream
为LPCSTR
?
std::ostringstream oss;
[...]
LPCSTR result = oss.str();
结果: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
从这个函数返回,而是 return std::string
。如果您返回,这可以避免处理生命周期问题LPCSTR
。如果您返回LPCSTR
,则必须分配内存并确保已释放它。正是您不想在 C++ 代码中做的那种事情。因此,在调用 Windows API 函数的位置返回std::string
并调用c_str()
该对象。