我无法从我拥有的 vector 类型字符串中删除某些索引。我的任务是用 html 标签(html、head 等)填充一个 vector ,但我需要去掉不匹配的标签(假设只有 p、br、img)。每次我在 for 循环之后打印 vector 时,我都会得到一个杂散的 br 和 p。非常感谢您的帮助!
for (int i = 0; i < tagStorage.size(); i++) {
if (tagStorage[i].find_first_of('/') == true) { //searches for closing tags
closingTags.push_back(tagStorage[i]);
}
else if (tagStorage[i].find("<p>") != string::npos) { //searches for <p> tag
noMatch.push_back(tagStorage[i]);
tagStorage.erase(tagStorage.begin() + i); //erase tag
}
else if (tagStorage[i].find("<br>") != string::npos) { //searches for <br> tag
noMatch.push_back(tagStorage[i]);
tagStorage.erase(tagStorage.begin() + i); //erase tag
}
else if (tagStorage[i].find("<img") != string::npos) { //searches for <img ..> tag
noMatch.push_back(tagStorage[i]);
tagStorage.erase(tagStorage.begin() + i); //erase tag
}
else {
openingTags.push_back(tagStorage[i]);
}
}
最佳答案
在移除当前元素后,您正在迭代下一个预期的 tagStorage
元素。
举个例子,假设您想从“Hello!”中删除每个“l”
"Hello!"
^
我++
"Hello!"
^
我++
"Hello!"
^
删除“l”。
我++
"Helo!"
^
如您所见,删除“l”后的迭代恰好经过下一个字符。一种解决方案是在删除元素后递减 i
,以补偿 for 循环递增。
关于c++ - 删除特定索引处的 vector 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42967173/