我创建了一个如下所示的程序
void Encode(shared_ptr<string>str)
{
shared_ptr<string> n(new string());
//I am creating the string pointed by n here by analyzing the string pointed by str
cout<<endl;
cout<<str.get()<<" Func "<<str.use_count()<<" "<<n.get()<<" "<<n.use_count()<<endl;
str=n;
cout<<str.get()<<" Func "<<str.use_count()<<" "<<n.get()<<" "<<n.use_count()<<endl;
}
int main ()
{
string s("aaabbbccd");
shared_ptr<string> str(new string(s));
Print(str);
cout<<endl;
cout<<str.get()<<" Main "<<str.use_count()<<" "<<endl;
Encode(str);
cout<<str.get()<<" Main "<<str.use_count()<<" "<<endl;
cout<<endl;
Print(str);
_getch();
return 0;
}
由于我正在对字符串进行编码,所以我在编码后不想要原始字符串,我尝试通过编写该行str=n
来做它认为这将str
指向我可以在我的主程序中使用的新字符串,但它是不正确,因为我仅将原始字符串作为输出,而不是修改后的字符串。
我什至检查了使用.get()
函数,它似乎只指向原始字符串。
谁能解释我为什么会这样,我怎样才能str
指向新的字符串?