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

问题描述:

#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数组。 station数组是一个结构体,我不允许改变它。目标是将文本文件中的数字读入数据数组,然后将它们从那里放入数组中。如何从文本文件读取int数组,在c + +中?

诀窍是,电台阵列有3个品质的每个元素:例如station [1]必须有距离,arri_time和depart_time(所有正整数)。这也意味着站点的数量将等于文本文件中的行数除以3.

我怀疑这可能是在没有数据数组的情况下完成的,但即使如此,我的代码仍然停留在一开始:它根本无法正确读取文件。我读过这个论坛上的一些文章,以及其他人,没有帮助...... 上面的代码只是一个部分,请考虑任何未声明的元素,相应地在我的主代码中声明。

感谢您的帮助!

+2

请缩进代码。第二:'int data [l];'不是合法的C++,因为'l'是一个变量。如果您正在学习C++,请关闭编译器给您的扩展,并在没有它们的情况下学习语言。 – PaulMcKenzie 2014-11-08 19:11:17

+0

为什么你不格式化你的代码? – 2014-11-08 23:15:42

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; 
} 
+0

此代码不起作用。 – 2016-10-14 18:40:32