如何在c ++中从文本文件读取到int数组?

时间:2014-11-08 19:09:32

标签: c++ file text input int

#include <iostream>
#include <stdlib.h>
#include <string>
#include <fstream>

struct specific {int distance; int arrive_time; int depart_time;};
int maxn=100;
ifstream File("c:\\data.txt");
if (!File.is_open())
{
cout << "Unable to open file!";
exit(-1); 
}
else
{ 
int l;
string rows;
while (getline(File,rows)){
++l;}
int data[l];

if (l>maxn)
{
cout << "Too much data!";
File.close();
exit(-1);
}
else
{
int i=1;
while (!File.eof() && i<=l)
{
Filel >> data[i];
i++;
} 

if (i!=l)
{ 
cout << "Inconsitent File!";
File.close(); 
exit(-1);
}
}
};
Fajl.close();

n = l/3;
specific station[n];
int j=1;
do{
for (int i=; i<=l; i+=3){
data[i] == station[j].distance;
data[i+1] == station[j].arrive_time;
data[i+2] == station[j].depart_time;
j++;}}
while (j<=n);
}

我是c ++和编程方面的新手。我的目标是 - 部分地,打开一个给定的文本文件,每行包含数字,一个数字(没有别的)。我需要将这些最终读入名为station [n]的数组中。为此,我在File和目标(站)数组之间放置了一个int数组。 站阵列,是一个结构,我不允许改变它。目标是从文本文件中读取数字到数据数组中,然后将它们相应地放入工作站数组中。

技巧是站点阵列对每个元素有3个质量:例如,站点[1]必须有距离,到达时间和离开时间(所有正整数)。这也意味着站的数量将等于文本文件中的行数除以3。

我怀疑这可能是在没有数据数组的情况下完成的,但即便如此,我的代码一开始就陷入困境:它根本无法正确读取文件。我已经在这个论坛和其他人上阅读了一些文章,没有人帮助.... 上面的代码只是部分代码,请考虑任何未声明的元素,相应地在我的主代码中声明。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

2014年,c ++不要害怕使用标准库和载体:

#include <fstream>
#include <vector>

int main()
{
    std::vector<int> data;
    std::ifstream DataFile("c:\\data.txt");

    if (DataFile)
    {
        int value;
        // read the elements 
        while (DataFile >> value)
        {
            data.push_back(value);
        }
    }
    return 0;
}