如何使用string :: replace with char *

时间:2011-10-06 17:33:46

标签: c++ string visual-c++ std

我试图用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);

1 个答案:

答案 0 :(得分:6)

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

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

您可以删除该条目并添加一个具有不同键但具有相同值的新条目。在你这样做时要小心你的迭代器的有效性。