无效使用自动

时间:2012-12-03 10:20:29

标签: c++ c++11 auto

在此代码中:

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

    }  

我从gcc 4.7.1获得错误:

error: invalid use of 'auto'|   

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

2 个答案:

答案 0 :(得分:6)

我认为这与auto无关。您无法在随机位置声明变量,例如,这也不会编译 - 相当于您尝试执行的操作,但没有auto

int main() {
  for ( ; (int i = 0) != 1; ++i)
    ;   
  return 0;
}

答案 1 :(得分: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 '%'.
}