2016-11-04 4 views
2
int H[500]; // global int array 
int main() 
{ 
    int check[500]; 
    bool same = true; 
    string input; 
    cout << "Enter Numbers: "; 
    getline(cin, input); 
    istringstream buf(input); 
    istream_iterator<string> beg(buf), end; 
    vector<string> tokens(beg, end); 
    int temp = 1; 
    for (auto& s : tokens) // error: expected initializer before ‘:’ token 
    { 
     H[temp] = atoi(s.c_str()); 
     check[temp] = atoi(s.c_str()); 
     temp++; 
    } 
    for (int ii = 1; ii < temp; ii++) 
     heapsort(temp);//cpp:43: error: expected primary-expression before ‘for’ 
         //   error: expected ‘;’ before ‘for’ 
         //   error: expected primary-expression before ‘for’ 
         //   error: expected ‘)’ before ‘for’ 

    return 0; 
} 

これをパテでコンパイルしようとすると、これらのエラーが発生します。それはビジュアルスタジオでうまく動作します。私が得ることができるどんな助けにも感謝します。ありがとうございました。文字列をint配列に変換するときにパテを実行するときにプログラムを取得するときに問題が発生する

EDIT: 私は "g ++ -0 filename filename.cpp"を使用しています。

+4

私が知る限り、パテはコンパイラではありません。どのコンパイラを使用していますか?コンパイルにはどのフラグを使用しますか? – nvoigt

+2

あなたは '-std = C++ 11'を見逃している可能性があります – Garf365

+0

' g ++ 'コマンド呼び出しで' -0'の代わりに '-o'を書いている(書きたいと思う)と思いますか? – Sergey

答えて

1

Puttyはコンパイラではなく端末なので、パテではリモートLinuxまたはUnixを意味します。g++またはclang++です。また、このコードを他の場所でうまくコンパイルしたと言われてから、using namespace std;ステートメントのような必要なインクルードとネームスペースのディレクティブがすべてあると仮定します。

あなたの問題は、-std=c++11をコンパイラの引数に追加する必要があると思います。

入力がない場合には、あなたのベクトルでゼロの束となってしまいますので、atoiを使用する場合はエラーをチェックする方法がないので、また、私は、代わりにatoistrtolまたはより良いstringstreamを使用したいです正しい。

+0

"g ++ -std = C++ 11 -o filename filename.cpp"という引数を追加しようとしたとき "cc1plus:error:認識できないコマンドラインオプション" -std = C++ 11 ""このエラーが発生しました。ストリングストリームが動作するようにしましたが、それに感謝します。とにかく教授がこれを格付けしているときに、 "--std = C++ 11"の引数を使わないので、私はそれを使わずに動作させる必要があります。私は問題がforステートメントであると思う。あなたはstringstreamを通って実行され、整数から外れたときにループを壊す方法を知っていますか? – BStill

+0

@BStill:g ++のどのバージョンがありますか? (g ++ -v) – Alex

+0

@Bまだ '--std = C++ 11'を試してください。 2つのマイナス記号に注意してください。 – Sergey

関連する問題