Неправильное использование авто

В этом коде:

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

}

Я получаю сообщение об ошибке от gcc 4.7.1:

error: invalid use of 'auto'|

есть идеи почему? разве это не должно быть правильно скомпилировано?

1

Решение

Я думаю, что это не имеет ничего общего с auto, Вы просто не можете объявлять переменные в случайных местах, например, это тоже не скомпилируется — эквивалент того, что вы пытались сделать, но без auto:

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

Другие решения

Если это в цикле, вы найдете только первый «%». Вам нужно возобновить поиск с 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 '%'.
}
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector