我正在尝试使用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()
的调用返回了一个无效的字符串,但我不确定。由于我已经把这个程序缩减到目前为止,我仍然遇到问题,我一定犯了一个令人尴尬的简单错误。感谢帮助!
答案 0 :(得分:12)
out.str()
按值返回std::string
,这意味着您正在临时调用.c_str()
。因此,在初始化intString
时,它已经指向无效(已销毁)数据。
缓存.str()
的结果并使用它:
std::string const& str = out.str();
char const* intString = str.c_str();