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)