在这段代码中:
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 '%'.
}