所以我有一个简单的JSON字符串,我正在使用for循环迭代(不要问我为什么不使用json解析器)。
在这个循环中,我想推出{
,}
和“”
(错误的
}
只是出于调试原因)
这是代码:
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);
}
不是很复杂,它基本上工作得很好,但由于某种原因,}
被跳过。它只是在字符串中迭代,就像它甚至不存在一样。任何人都可以重现这种行为吗?我完全没有想法,这里可能出错了。
编辑: 好吧,我可以看到这可能是另一篇文章的副本,但公平地说,当遇到字符串问题时很难偶然发现关于向量的帖子
答案 0 :(得分:0)
它遍历字符串,好像括号不在那里,因为每个右括号前面都有一个空格。举一个更简单的例子:
abc }def
循环到达i=3
,空格会将其删除,然后转到i=4
,现在就是&#39; d&#39;。
您可以通过在删除字符时递减i
来解决此问题。