2017-05-07 79 views
0

我对C++非常陌生,从学校得到了这个任务,现在我陷入了困境,因为我无法使它工作,有些帮助将不胜感激。提前致谢。从文本文件读取整数并将它们存储到一个数组中

我有整数这样一个文本文件:8 3 7 1 2 0

我需要创建程序读取这些整数并将其存储在数组中。程序检查文本文件并计算出有多少整数,然后相应地创建所需大小的数组,然后使用文件中的整数填充该数组。我像这样的东西来到了:

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

int main(){ 

    ifstream File("data.txt"); 
    int count; 
    File >> count; 
    int array[count]; 
    for(int i=0; i<count; i++){ 
     File >> array[i]; 
    } 

    cout<<"File contains: "<<count<<" integers"; 
    cout<<"Array of integers taken from the file: "; 

    for(int i=0; i<count; i++){ 
     cout<<array[i]; 
    } 
} 

出于某种原因,我count整数没有得到任何价值,我检查了,它只是一个零程序后,因此我的整个代码将无法正常工作。

+1

使用'File.is_open()'查看是否打开文件成功。 – Jiahao

+0

尝试检查每个I/O操作(打开,每个读取操作)是否实际成功。另外'int array [count]','count'是一个变量是无效的C++(如果你的编译器接受它,它就是编译器特定的扩展)。此外,从您描述的示例中,该文件不包含要读取的后续整数的数量。 – Peter

+0

这将有助于了解其余的读取操作是否成功。 – hvanbrug

回答

0

如果提取失败,则写入零值并设置失败位。如果提取的结果值太大或太小而不符合值,则会写入std::numeric_limits<T>::max()std::numeric_limits<T>::min(),并设置失败位标志。

这来自operator>>的文档std::ifstream。如您所见,如果提取失败,则该变量设置为0。为什么提取失败?那么,你永远不会检查文件是否打开,所以文件可能不存在并加载失败。

但即使您的文件加载正确,文件中的第一个元素似乎并不是它中的整数量。如果不是,则必须读取每个整数,并将它们存储在动态数组中,因为您不知道大小(如std::vector)。

+0

哦,所以它就是这样,我必须使用矢量这一点,可惜我还没有研究它们...... – RookiefromLit

0

变量长度数组不存在un C++。 使用vector<int>来存储数据。

顺便说一句,你可以使用:

System("pwd");//linux 

要检查的工作路径。

相关问题