将数字从文本文件读入数组

时间:2014-11-23 23:16:09

标签: c++ arrays

我一直在玩这个但是我无处可去。我试图从txt文件中读取整数列表到数组(1,2,3,...)。我知道将要读取的整数量,100,但我似乎无法填充数组。每次我运行代码本身时,它只为所有100个整数存储值0。有什么想法吗?

//Reads the data from the text file
void readData(){
ifstream inputFile;
inputFile.open("data.txt");

if (!inputFile){
    //error handling
    cout << "File can't be read!";
}
else{
    int a;
    while (inputFile >> a){
        int numbers;
        //Should loop through entire file, adding the index to the array
        for(int i=0; i<numbers; i++){
            DataFromFile [i] = {numbers};
        }
    }
}

}

2 个答案:

答案 0 :(得分:0)

您没有在a中阅读numbers,请将代码更改为:

if (!inputFile){
    //error handling
    cout << "File can't be read!";
}
else{
    int a;
    while (inputFile >> a){
        //Should loop through entire file, adding the index to the array
        for(int i=0; i<a; i++){
            DataFromFile [i] = a; // fill array
        }
    }
}

如果循环浏览文件,则每次都会使用新号码覆盖该数组。这可能不是你想要做的。你可能想用100个不同的号码填写100个地点?在这种情况下,请使用以下代码:

if (!inputFile){
    //error handling
    cout << "File can't be read!";
}
else{
    int i = 0;
    while (inputFile >> a){  // Whilst an integer is available to read
        DataFile[i] = a;   // Fill a location with it.
        i++;               // increment index pointer
    }
}

答案 1 :(得分:0)

要从istream中读取单个整数,您可以执行

int a;
inputFile >> a;

你在while循环中做的是什么。 虽然对于流中的每个整数(在文件中),你将执行will的块

inputFile >> a一次读取一个整数。如果进入测试(如果/同时),真值将回答“是否已读取值?”的问题。

我不知道你试图用number变量做什么。因为它没有被你初始化它lloks就像它的值是0,最终导致foor循环不运行

如果您想要准确读取100整数

int *array = new int[100];
for (int i=0; i<100; ++i)
  inputFile >> array[i];

否则你可以保留一个计数器

int value;
int counter = 0;
while(inputFile >> value && checksanity(counter))
{
    array[counter++] = value;
}