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

これがループ内にある場合は、最初の「%」のみが見つかります。後続の'%'を見つけるには、some_string.begin()ではなくiから検索を再開する必要があります。

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 に答える