【发布时间】:2011-01-01 21:15:27
【问题描述】:
colours 是 std::map<string, string>,其中每对的第一个元素是 2 个字母的 std::string 颜色代码,第二个元素是该颜色的 7 个字符 std::string shell 转义代码。
size_t i;
for(map<string, string>::iterator iter = colours.begin(); iter != colours.end(); iter++) {
while((i = text.find(iter->first)) != string::npos) {
text.replace(i, i + sizeof(iter->first), iter->second);
}
}
运行此代码时,程序会出现段错误。我最好的猜测是,这与替换字符串的长度比它要替换的字符串的长度长有关,但据我所知,这只会导致char * 的段错误,而不是std::string。
【问题讨论】:
标签: c++ string segmentation-fault