自动使用无效

Invalid use of auto

本文关键字:无效      更新时间:2023-10-16

在这段代码中:

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

我从 gcc 4.7.1 收到错误:

error: invalid use of 'auto'|   

有什么想法吗?不应该正确编译吗?

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

int main() {
  for ( ; (int i = 0) != 1; ++i)
    ;   
  return 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 '%'.
}