我将stringstream的字符串转换为char指针,但它会写入空字符串。 为什么会失败?
std::stringstream ss;
ss << "de12mu";
char* msg = (char*)ss.str().c_str();
std::cout << "msg: " << msg << " " << strlen(msg) << std::endl;
答案 0 :(得分:1)
这是因为您对ss.str()
的调用会返回临时字符串,然后当您获得指向该临时字符串的指针时,它将在语句完成后无效。
在销毁临时字符串后使用该指针是未定义的行为。
另请注意,c_str
函数会返回const char*
。