如何从文件中读取值,然后使用它们初始化2D数组C ++

时间:2018-09-30 03:52:46

标签: c++ arrays declaration fstream

我希望阅读一个文本文件,例如

4
2
3
4 3
2 1
5 4
8 4

第一行是2D数组的第一维,第二行是2D数组的第二维,第三行是一个值。在读取前三个值并将其存储到变量n,m,k中后,我想初始化2D int数组int x [n] [m]。

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

using namespace std;

int n,m,k;

int main()
{
    ifstream File;
    File.open("text.txt");

    if (File.fail()) {
        cout << "error opening file";
    }

    while (!File.eof())
    {
            File >> n;
            File >> m;
            File >> k;

            int x[n][m];

            for (int i = 0; i < 3; i++) {
                for (int j = 0; j < 5; j++) {
                    File >> x[i][j];
                }
            }

    }
    return 0;
}

但是,由于表达式n和m没有常量值,因此无法初始化数组。如果我将变量设置为const int n,m,k,我将无法使用>>从文件中读取它们。如何读取数组大小调整值,使用它们创建数组,然后将值存储在其中?

编辑:

#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <math.h>

using namespace std;
std::vector < std::vector <int>> x;

int n,m,k;

int main()
{
    ifstream File;
    File.open("test.txt");

    if (File.fail()) {
        cout << "error opening file";
    }

    while (!File.eof())
    {
            File >> n;
            File >> m;
            File >> k;

            for (int i = 0; i < n; i++) {
                vector <int> row;
                for (int j = 0; j < m; j++) {
                    int readFromFile = 0;
                    File >> readFromFile;
                    row.push_back(readFromFile);
                }
                x.push_back(row);
            }

    }

    cout << n;
    cout << "\n";
    cout << m;
    cout << "\n";
    cout << k;
    cout << "\n";

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            cout << x[i][j];
            cout << " ";
        }
        cout << "\n";
    }
    return 0;

}

1 个答案:

答案 0 :(得分:2)

id  user_id     article_id
1   (null)      8
3   (null)      9
4   (null)      10

输出:

Access-Control-Allow-Origin