c – std :: ostringstream没有返回有效的字符串

前端之家收集整理的这篇文章主要介绍了c – std :: ostringstream没有返回有效的字符串前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用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,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();

猜你在找的C&C++相关文章