2

20 個の名前を含むテキスト ファイルを文字列の配列に読み込んで、各文字列を画面に出力しようとしています。

string monsters[20];
ifstream inData;
inData.open("names.txt");
for (int i=0;i<monsters->size();i++){
    inData >> monsters[i];
    cout << monsters[i] << endl;
}inData.close();

ただし、このコードを実行すると、ループは実行されますが、配列には何も読み込まれません。どこで間違ったのですか?

4

2 に答える 2

6

for ループの終了条件が間違っています:

i < monsters->size()

これは実際には、配列の最初の文字列で size() を呼び出します。これは、最初のインデックスにあるためです。(monsters は Monsters[0] と同等です) デフォルトでは空なので、0 が返され、ループは実行されません。

C++ には配列用の size() 演算子がないことに注意してください。代わりに、終了条件に定数 20 を使用する必要があります。

i < 20
于 2012-05-01T11:20:00.090 に答える
3

monsters->size()0実行時です。その行を に変更しfor (int i=0;i<20;i++)ます。

 string monsters[20];
    ifstream inData;
    inData.open("names.txt");
    for (int i=0;i<20;i++){
        inData >> monsters[i];
        cout << monsters[i] << endl;
    }inData.close();
于 2012-05-01T11:21:58.297 に答える