我试图用char *替换子字符串,strng :: replace拒绝接受任何不是const字符串*
map<string,char *> renamed_files;
map<string,char *>::iterator rename_it;
有没有办法用cPath替换地图中的子字符串?
rename_it = renamed_files.begin();
char cPath[1024];
string strpath = cPath;
rename_it->first.replace(0,len, strpath);
答案 0 :(得分:6)
不,地图中的键是const。因此问题是rename_it->first
是const,但replace
(当然)是非const成员函数。
如果你以某种方式修改它,那将改变地图中条目的正确位置,但地图无法检测到你正在更改字符串,因此它无法移动条目。为了避免整个问题,禁止修改。
您可以删除该条目并添加一个具有不同键但具有相同值的新条目。在你这样做时要小心你的迭代器的有效性。