如何使用string :: replace with char*

roy*_*g86 1 c++ string std visual-c++

我试图用char*替换子字符串,strng :: replace拒绝接受任何不是const字符串*

   map<string,char *> renamed_files;
   map<string,char *>::iterator rename_it;
Run Code Online (Sandbox Code Playgroud)

有没有办法使用cPath替换地图中的子字符串?

   rename_it = renamed_files.begin();
   char cPath[1024];
   string strpath = cPath;
   rename_it->first.replace(0,len, strpath);
Run Code Online (Sandbox Code Playgroud)

Ste*_*sop 6

不,地图中的关键是const.因此问题是rename_it->firstconst 是,但replace(当然)是非const成员函数.

如果你以某种方式修改它,那将改变地图中条目的正确位置,但地图无法检测到你正在更改字符串,因此它无法移动条目.为避免整个问题,禁止修改.

您可以删除该条目并添加一个具有不同键但具有相同值的新条目.在执行此操作时,请注意迭代器的有效性.