Я хочу прочитать текстовый файл, такой как
4
2
3
4 3
2 1
5 4
8 4
Первая строка - это первое измерение двумерного массива, а вторая - второе измерение двумерного массива, а третья строка -значение.После считывания и сохранения первых трех значений в переменные n, m, ki хотел бы инициализировать двумерный массив 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, я бы не смог прочитать их из файла, используя >>.Как я могу прочитать значения размеров массива, использовать их для создания массива, а затем сохранить значения в них?
edit:
#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;
}