c ++开始和结束不起作用

Fla*_*dun 2 c++ arrays iterator

这是代码:

#include <iostream>
#include <fstream>
#include <algorithm>
#include <iterator>
using namespace std;

int main(int argc, char** argv)
{
  ifstream myfile (argv[1]);
  char ch;
  char operator_symbols[]={'+','-','*','<','>','&','.',
                               '@','/',':','=','~','|','$',
                               '!','#','%','^','_','[',']',
                               '{','}','\"','`','?'
                              };
  while(!myfile.eof())
    {
      myfile.get(ch);
      if(isalpha(ch))
    {
      cout << "isalpha " << ch << endl; 
    }
      else if(isdigit(ch))
    {
      cout << "is num " << ch << endl;
    }
      else if(find(begin(operator_symbols), end(operator_symbols), ch) != end(operator_symbols))
    {
      cout << "is operator sym" << ch << endl;
    }
      else if(ch == '(' || ch == ')' || ch == ';' || ch == ',')
    {
      cout << "is punctuation " << ch << endl;
    }
      else if (isspace(ch))
    {
      cout << "is space " << ch << endl;
    }
    }
}
Run Code Online (Sandbox Code Playgroud)

该错误与尝试在运算符符号数组中查找字符匹配的if条件有关.:

****@*****:~/Documents/ABC$ g++ lexer.cpp -o lexer
lexer.cpp: In function ‘int main(int, char**)’:
lexer.cpp:30:42: error: ‘begin’ was not declared in this scope
       else if(find(begin(operator_symbols), end(operator_symbols), ch) != end(operator_symbols))
                                          ^
lexer.cpp:30:65: error: ‘end’ was not declared in this scope
       else if(find(begin(operator_symbols), end(operator_symbols), ch) != end(operator_symbols))
Run Code Online (Sandbox Code Playgroud)

我已经包含了算法和迭代器.然而编译器无法编译.请帮忙!我已经尝试谷歌了.

and*_*ars 5

在C++ 11中引入了使用std::beginstd::end使用传统C数组,因此您需要添加-std=c++11到编译器调用中.