我无法将int转换为c字符串(const char*):

int filenameIndex = 1;
stringstream temp_str;
temp_str<<(fileNameIndex);
const char* cstr2 = temp_str.str().c_str();

没有错误,但是cstr2没有得到期望的值。它用一些地址初始化。

有什么问题,我该如何解决?

最佳答案

temp_str.str() 返回一个临时对象,该对象在语句末尾被销毁。这样,由cstr2指向的地址将无效。

而是使用:

int filenameIndex = 1;
stringstream temp_str;
temp_str<<(filenameIndex);
std::string str = temp_str.str();
const char* cstr2 = str.c_str();

DEMO

10-06 15:07