1

在这段代码中:

for ( ;(auto i = std::find(some_string.begin(),some_string.end(),'%')) != some_string.end();)
    {

    }  

我从 gcc 4.7.1 收到错误:

error: invalid use of 'auto'|   

任何想法为什么?那不应该被正确编译吗?

4

2 回答 2

6

我认为这与auto. 您只是不能在随机位置声明变量,例如这也不会编译 - 相当于您尝试做的事情,但没有auto

int main() {
  for ( ; (int i = 0) != 1; ++i)
    ;   
  return 0;
}
于 2012-12-03T10:28:05.980 回答
0

如果这是在一个循环中,您将只能找到第一个 '%'。您需要从 i 继续搜索,而不是 some_string.begin() 才能找到后续的 '%'。

auto i = std::find(some_string.begin(), some_string.end(), '%'));
while (i != some_string.end()) {
    // Your code here.

    i = std::find(i, some_string.end(), '%'));  // Find next '%'.
}
于 2012-12-04T16:51:04.733 回答