C++返回stringstream.str()

Ped*_*dro 1 c++ stringstream return-value

我有一个静态方法,应返回下一个可用的ID.其他类中的几个静态成员调用此函数,因此每个成员都会分配不同的id.但是,当我打印指定的值时,我不会得到"id0","id1",而只是像"*"这样的符号.我正在使用此代码:

    int A::i = 0; //static member

std::string A::id()
{
    std::stringstream sst; 
    sst<< "id" << A::i;

    i++;

    return sst.str(); //i've tried to return a const char* too, but doesnt work either
}


   //assigning id's in several classes like this: 
   const char* B::id = A::id().c_str(); 
   const char* C::id = A::id().c_str(); 


   //printing them in the main function: 
   std::cout << B::id << " " << C::id << "\n";
Run Code Online (Sandbox Code Playgroud)

我不明白为什么上面的代码不起作用.当我执行以下代码时,打印预期结果"id10":

    static std::string  gt()
    {
         std::stringstream ss; 
         ss << "id" << 10;

         return ss.str();
    }
Run Code Online (Sandbox Code Playgroud)

K-b*_*llo 6

看着

const char* C::id = A::id().c_str(); 
Run Code Online (Sandbox Code Playgroud)

您正在创建一个新的id字符串,然后您获取一个指向其数据的指针(作为一个c字符串),然后在此之后,您指向的内容的临时字符串将被销毁.简单的回答:要么坚持std::string要么是平原intID.