std::ostringstream 未返回有效的字符串

std::ostringstream isn't returning a valid string

本文关键字:字符串 有效 ostringstream std 返回      更新时间:2023-10-16

我正在尝试使用 std::ostringstream 将数字转换为字符串(char *),但它似乎不起作用。这是我的代码:

#include <windows.h>
#include <sstream>
int main()
{
    std::ostringstream out;
    out << 1234;
    const char *intString = out.str().c_str();
    MessageBox(NULL, intString, intString, MB_OK|MB_ICONEXCLAMATION);
    return 0;
}

生成的消息框中根本没有文本。

这让我相信对out.str().c_str()的调用返回了一个无效的字符串,但我不确定。由于到目前为止我已经修剪了这个程序,所以我仍然遇到问题,我一定犯了一个令人尴尬的简单错误。感谢帮助!

>out.str()值返回std::string,这意味着您正在临时调用.c_str()。因此,在初始化intString时,它已经指向无效(已销毁)的数据。

缓存.str()的结果并使用它:

std::string const& str = out.str();
char const* intString = str.c_str();