对于循环字符串,忽略字符

时间:2017-06-12 16:02:06

标签: c++ string loops

所以我有一个简单的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);
}

不是很复杂,它基本上工作得很好,但由于某种原因,}被跳过。它只是在字符串中迭代,就像它甚至不存在一样。任何人都可以重现这种行为吗?我完全没有想法,这里可能出错了。

编辑: 好吧,我可以看到这可能是另一篇文章的副本,但公平地说,当遇到字符串问题时很难偶然发现关于向量的帖子

1 个答案:

答案 0 :(得分:0)

它遍历字符串,好像括号不在那里,因为每个右括号前面都有一个空格。举一个更简单的例子:

abc }def

循环到达i=3,空格会将其删除,然后转到i=4,现在就是&#39; d&#39;。

您可以通过在删除字符时递减i来解决此问题。