使用stringstream将pid_t转换为const char *

时间:2012-07-19 14:56:07

标签: c++ string pid stringstream

我想将进程pid转换为const char *但是下面的代码不起作用:

            std::ostringstream str_pid;
        str_pid << getpid();
        const char * cstr_pid = str_pid.str().c_str();

它大部分时间都有效,但有时会出现错误的结果。显然我做错了什么。 有什么想法吗?

1 个答案:

答案 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*