将字符串转换为char指针会返回一个空字符串

时间:2013-08-02 07:38:30

标签: c++

我将stringstream的字符串转换为char指针,但它会写入空字符串。 为什么会失败?

std::stringstream ss;
ss << "de12mu";
char* msg = (char*)ss.str().c_str();
std::cout << "msg: " << msg << " " << strlen(msg) << std::endl;

1 个答案:

答案 0 :(得分:1)

这是因为您对ss.str()的调用会返回临时字符串,然后当您获得指向该临时字符串的指针时,它将在语句完成后无效。

在销毁临时字符串后使用该指针是未定义的行为

另请注意,c_str函数会返回const char*