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

您正在寻找特定元素;那么就不需要数组了。

#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

它是您要查找的第二个数字,因此将 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

您的整数数组的大小为 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 回答