2

私がやろうとしているのは、数字「10」のインデックスがわかっているので、それを ary に読み込みたいということです。

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

int ary[1];
ifstream inData;
inData.open("num.txt");
for (int i=1;i<2;i++){
    inData >> ary[0];
}

num.txt: 0   10   20
three number and separate by a '\t'

しかし、これはうまくいきません。どうすればよいですか?

4

3 に答える 3

0

探している2番目の数値なので、iを0に変更するか、<を<=に変更します。次に、サイズ2の配列が必要であるか、インデックスを知ってint ary[2]いるので単にを使用しint aryます。前の反復で書き込まれたものは、ループの後続の各反復によって上書きされます。

int main() {
    int ary;
    ifstream inData;
    inData.open("num.txt");
    for (int i=0;i<2;i++){
        inData >> ary;

    }
    printf("%d\n",ary);
    return 0;
}

アレイで

int main() {
    int ary[2];
    ifstream inData;
    inData.open("num.txt");
    for (int i=0;i<2;i++){
        inData >> ary[i];
        printf("%d\n",ary[i]);  
    }

    return 0;
}
于 2012-12-11T02:32:35.190 に答える
0

あなたは特定の要素を探しています。その場合、配列は必要ありません。

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    int elementValue = 0;
    int indexOfElement = 2;
    ifstream inData;
    inData.open("num.txt");
    if (!inData.good())
    {
        std::cout << "Cannot open file" << std::endl;
        return 1;
    }
    int currentElement = 1;
    while(currentElement <= indexOfElement && inData.good())
    {
        inData >> elementValue;
        ++currentElement;
    }
    if (inData.good())
        std::cout << "Found: " << elementValue << std::endl;
    else 
        std::cout << "Failed to find enough elements" << std::endl;

    return 0;
}
于 2012-12-11T02:44:50.663 に答える
0

int の配列のサイズは 1 です。ファイルを反復処理してもうまくいかないと思います。

次のような 3 つの値を読み取ることができるように、より多くのスペースを予約します。

int ary[3];

また、ループを次のように変更します。

for (int i=0;i<3;i++)

これも追加する必要があると思います:

for (int i=0;i<3;i++)
inData.read(buffer,sizeof(int))
于 2012-12-11T02:34:45.157 に答える