所以我有一个简单的JSON字符串,我用for循环迭代(不要问为什么我不使用json解析器)。 在这个循环中我想踢出来{
,}
和“” (错位
}
只是有用于调试的原因) 下面是代码:For循环字符串忽略字符
std::string str("{'pi': 3.141, 'happy': }true }");
for (int i = 0; i < str.length(); i++)
{
char temp = str[i];
if (temp == '{' || temp == '}' || temp == ' ')
str.erase(i, 1);
}
不是很复杂,它基本上只是罚款但由于某种原因,}
被跳过。它只是遍历字符串,就像它不会在那里一样。任何人都可以重现这种行为?我完全没有想法这里可能是错的。
编辑: 好吧,我可以看到,这可能是其他职位的副本,但要公平很难在一个关于向量后绊倒具有带有字符串
如果字符串中的字符数保持不变,则只能使用for循环。但是在迭代字符串的同时删除字符。 –
当某些字符从字符串中移除时,字符串的大小发生变化,并且索引定位的不仅仅是当前(已删除)元素的下一个元素,而是紧挨着那个 – zapredelom