1

私はc++で本当に基本的な問題を抱えています。タブ区切りのファイルを読んでいて、ファイルにあるフィールドの数(さまざまな幅のさまざまなファイルで機能する)の場合、次元で配列を宣言したいので、最初の行とフィールドの数を数えて、私はこれを試しました:

while(getline(t, line));{
...
if(!flag)
{int array[size][5];
flag=1}
...
}

しかし、エラーが発生します。

エラー:「配列」はこのスコープで宣言されていません

変数のスコープがifループにあるためだと理解していますが、null配列を宣言してサイズを変更する方法はありますか?または、ポインタを使用する必要がありますか?

4

4 に答える 4

6

配列のサイズはコンパイル時定数でなければなりません。std::vector動的なサイズの配列が必要な場合は、を使用します。

コードに関するその他の問題:

  1. の後にセミコロンを削除しwhileないと、ファイル全体が読み取られた後にループ本体が1回だけ実行されます。

  2. の後にセミコロンを追加しflag=1ます。

于 2012-08-09T09:24:31.730 に答える
4

あなたはC++を書いているので、なぜstd::vector<std::vector<int> >?可能であれば(ここにあります)、生のポインターを使用しないようにしてください。

于 2012-08-09T09:26:20.947 に答える
1

ポインタは行く方法になります...

于 2012-08-09T09:23:42.987 に答える
0

intarray[size]はC99だけで可能です。C ++では、プレーンCの配列サイズはコンパイル時定数である必要があります。

于 2012-08-09T10:04:53.280 に答える