C ++如何将文本文件中的特定元素读入数组?

时间:2012-12-11 02:21:53

标签: c++ arrays file stream

我想要做的是,现在我知道数字“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'

但这不起作用,我该怎么办?

3 个答案:

答案 0 :(得分:0)

它是您正在寻找的第二个数字,所以要么将i更改为0或者&lt;到&lt; =。其次,您需要一个大小为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;
}

答案 1 :(得分: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))

答案 2 :(得分: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;
}