使用fstream从文件加载数据

时间:2017-04-02 13:48:41

标签: c++ sequence fstream

在文件sequences.txt中,有100行描述了两行。第一个说明了这个序列中的数量,而第二个包含了这个序列中的数字(数据用一个空格隔开)。例如,前四行是:

5
1 3 6 7 9
5
17 22 27 32 37

你能告诉我如何使用fstream库加载这些数据,以便我能够做一些数学运算,比如计算每个序列的差异或它们的总和吗?我想我必须使用两个数组,一个用于每个序列中的数字量,另一个用于每个序列中的数字。感谢。

1 个答案:

答案 0 :(得分:0)

我的代码是一个通用的解决方案,它将把你的文件放在2D锯齿状数组中。您现在拥有最终阵列中的所有数据,您可以根据需要执行任何任务。

文件

5
1 3 6 7 9
5
17 22 27 32 37
6 
1 2 3 4 5 6
3
13 45 67

使用2D数组获取数据的代码。

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
    string str;
    ifstream in("File.txt");
    int count = 4; //Your number of test cases here as you said 100 or 200
    int *sizes = new int[count]; // all szies for your 1D arrays
    int **Array = new int*[count]; //Main 2D array
    for (int i = 0; i < count; i++)
    {
        in>>sizes[i]; //taking size for 1 row
        Array[i] = new int[sizes[i]]; //Making arrays 
        for (int j = 0; j < sizes[i]; j++)
        {
            in >> Array[i][j]; //getting values of row
        }
    }
    for (int i = 0; i < count; i++)
    {
        for (int j = 0; j < sizes[i]; j++)
        {
            cout << Array[i][j] << " "; //Printing Final Array [i,j]
        }
        cout << endl;
    }
    //Now you have your final array in Array which is 2D Jagged Array You Can Do What Ever You Want.
    for (int i = 0; i < count; i++) //memory release
        delete[] Array[i];
    delete[] Array;
    delete[] sizes;
    system("pause");
    return 0;
}