c ++字符串迭代器

Joe*_*Joe 9 c++ string iterator

我试图在循环中使用迭代器在字符串上执行if语句,但无法弄清楚如何获取if语句的当前字符:

for (std::string::iterator i=buffer.end()-1; i>=buffer.begin(); --i) {
    if (!isalpha(*i) && !isdigit(*i)) {
        if(i != "-") { // obviously this is wrong
            buffer.erase(i);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有人可以帮助我获取当前字符,以便我可以做一些额外的if语句吗?

Jam*_*lis 20

我无法弄清楚如何获得当前角色

你在这里做了两次:

if (!isalpha(*i) && !isdigit(*i))
Run Code Online (Sandbox Code Playgroud)

当您取消引用迭代器(*i)时,您将获得它指向的元素.

"-"
Run Code Online (Sandbox Code Playgroud)

这是一个字符串文字,而不是字符.字符常量使用单引号,例如'-'.

for (std::string::iterator i=buffer.end()-1; i>=buffer.begin(); --i)
Run Code Online (Sandbox Code Playgroud)

使用反向迭代器会更简单:

for (std::string::reverse_iterator i = buffer.rbegin(); i != buffer.rend(); ++i)
Run Code Online (Sandbox Code Playgroud)