2016-02-05 3 views
0

Я использую последнюю версию C++, и я пытаюсь запустить следующий код. Тем не менее, он продолжает говорить мне, что stoi «не объявлен в этой области». Я новичок в C++, поэтому, пожалуйста, поделитесь, если у вас есть идеи.C++ stoi out of scope issue

#include <iostream> 
using namespace std; 

#include <iostream> 
using namespace std; 
#include <string> 



int main(int argc, char *argv[]) 
{ 

int a; 
for (int i=0; i<argc; i++) 
{ 
    string str(argv[1]); 

    a=stoi(str); 


    if (a<1) { 
     cout<< "the sequence length must be greater than 1"<<endl; 
    } else { 
     cout <<"consecutive "<< a<<endl; // prints the input number of required consecutive 
    } 
} 

int num[1000000]; 
int n, j; 
n=1; 

for (int x=1;!cin.eof() ; ++x) 
{ 
    cin>>num[x]; 

    if (cin.fail()) 
    { 
     cout<< "error, only integers allowed"<<endl; 
    break; 
    } 


    else if (x>=a) 

    { 
     while (num[x-n+1] - num[x-n] == 1) 

     { ++n; 

     if (n == a) 
     { cout<< "sequence found: " ; 

     for (j=a-1; j >=0; --j) 

      cout<< num[x-j]<<" "; 
     break; 
     } 
     } 
    } 
} 

cout<<endl; 
return 0; 
} 
+0

Какой компилятор и как компиляции (например, команды)? – 101010

+0

Я попытался запустить этот код: https://ideone.com/AJcMA0, но он дает другую ошибку. Вы уверены, что это ошибка? –

+0

Я использую eclipse и просто строю встроенный инструмент построения @ 101010 – OneMoreQuestion

ответ

2

std::stoi является C++11 и выше особенности, поэтому позволяют C++ 11 на компиляцию.

В GCC или звоном, флаг -std=c++11

CXX -std=c++11 cc.cc 

, где CXX будет либо g++ или clang++.

Пожалуйста, это изменение также, в части включения заголовка

#include <iostream> 
#include <string> 
using namespace std; 
+1

Bett er, удалите 'using namespace std;' полностью. –

+0

Согласовано, сохраняет некоторую дополнительную типизацию в текущем примере :) – dlmeetei

+0

g ++ -std = C++ 11 cc.cc отлично работает – OneMoreQuestion