Я хочу загрузить многомерный массив из файла, у меня есть этот код:Загрузка многомерного массива из файла
std::vector<std::vector<int>> matrix;
for (int r = 0; r < cols; r++)
{
std::vector<int> row;
for (int c = 0 ; c < cols ; c++)
{
int temp;
if (fin >> temp)
{
std::cout << temp;
row.push_back(temp);
}
}
matrix.push_back(row);
}
переменной Cols отлично, вложенный цикл называются 9 раз, если у меня есть массив 3х3, так это работает как ожидалось ... Однако кажется, что файл не может прочитать одно целое (fin >> temp
). Fin - это обработчик файлов. Что не так?
Содержание файла:
0 1 1
0 0 1
1 1 1
Весь код:
std::vector<std::vector<int>> foo()
{
std::string filename;
std::cout << "Filename: ";
std::cin >> filename;
std::vector<std::vector<int> > matrix;
std::ifstream fin(filename);
if(!fin) {
std::cout << "Error";
exit(EXIT_FAILURE);
}
std::string line;
int cols = 0;
if(fin.is_open()){
while(!fin.eof()){
std::getline(fin,line);
cols++;
}
}
for (int r = 0; r < cols; r++)
{
std::vector<int> row;
for (int c = 0 ; c < cols ; c++)
{
int temp;
if (fin >> temp)
{
std::cout << temp; // displays nothing
row.push_back(temp);
}
std::cout << temp; // displays some crap like -84343141
}
matrix.push_back(row);
}
std::cin >> filename; // to stop execution and see the results
return matrix;
}
покажите нам файл. –
Файл представляет собой просто простую матрицу, где всегда column = rows. – user2252786
@DavidJashi: Нет, нет. Он читает только следующее целое число. –