我想将进程pid转换为const char *但是下面的代码不起作用:
std::ostringstream str_pid;
str_pid << getpid();
const char * cstr_pid = str_pid.str().c_str();
它大部分时间都有效,但有时会出现错误的结果。显然我做错了什么。 有什么想法吗?
答案 0 :(得分:4)
cstr_pid
将是一个悬空指针,因为std::string
返回的临时str_pid.str()
在cstr_pid
分配后被破坏。创建str_pid.str()
返回值的副本:
const std::string my_pid(str_pid.str());
然后在需要my_pid.c_str()
时使用const char*
。