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)
不,地图中的关键是const.因此问题是rename_it->firstconst 是,但replace(当然)是非const成员函数.
如果你以某种方式修改它,那将改变地图中条目的正确位置,但地图无法检测到你正在更改字符串,因此它无法移动条目.为避免整个问题,禁止修改.
您可以删除该条目并添加一个具有不同键但具有相同值的新条目.在执行此操作时,请注意迭代器的有效性.