0

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

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

1 回答 1

1

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

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

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

于 2013-08-02T07:40:47.347 回答