std :: ostringstream到LPCSTR?

时间:2015-08-18 10:44:55

标签: c++ visual-studio winapi std lpcstr

如何将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

1 个答案:

答案 0 :(得分:7)

像这样:

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()