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)
看着
const char* C::id = A::id().c_str();
Run Code Online (Sandbox Code Playgroud)
您正在创建一个新的id字符串,然后您获取一个指向其数据的指针(作为一个c字符串),然后在此之后,您指向的内容的临时字符串将被销毁.简单的回答:要么坚持std::string要么是平原intID.