6

我正在尝试使用 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()返回的是无效字符串,但我不确定。由于到目前为止我已经将这个程序精简了但仍然遇到问题,我一定犯了一个令人尴尬的简单错误。帮助表示赞赏!

4

1 回答 1

12

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

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

std::string const& str = out.str();
char const* intString = str.c_str();
于 2012-06-22T22:36:21.877 回答