0 / 0 / 0
Регистрация: 23.10.2021
Сообщений: 25
1

Ошибка при считывании матрицы из файла

15.11.2021, 22:27. Показов 771. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пытаюсь считать матрицу 4x4 с файла, но компилятор выдает ошибку " no matching function for call to 'std::vector<std::vector<int> >:: push_back(size_t&)'". Не подскажете что делать? И можно ли вообще таким образом считать двумерный массив?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
const char* FILE_NAME = "myfile.txt";
int fileIn(const char* FILE_NAME, size_t var)
{
           std::vector<std::vector<int>> arr;
            
             std::ifstream file(FILE_NAME);
 
                if (!file.is_open()) {
                    throw ERROR_FILE;
                }
                
               while(!file.eof())
               {
                    file >> var;
                    arr.push_back(var); //здесь возникает ошибка
                    std::cout << std::endl;
            
               }
                size_t N = arr.size();
               
               file.close();
                 arr.clear();
                 return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.11.2021, 22:27
Ответы с готовыми решениями:

Ошибка, при считывании инфы с файла...
Вот есть код:#include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; #include &lt;fstream.h&gt;...

Ошибка при считывании двоичного файла
При считывании из .EXE файла возникает ошибка, а возникает она когда считываемый байт равен 0x1A....

Ошибка при считывании структуры из бинарного файла
Всём доброго времени суток. Условие таково. Из файла, открытого в бинарном режиме, считывается...

Ошибка при Считывании из файла форм-приложением
Создаю приложение с формами на С++, одна из необходимых функций - считывание информации (точек...

Ошибка 0xcdcdcdcd при считывании fscanf-ом из файла в указатель
Ошибка заключается в том, что при выделении памяти на указатель он каким-то боком не заполняется...

5
Модератор
2637 / 1750 / 919
Регистрация: 16.10.2013
Сообщений: 5,065
Записей в блоге: 14
16.11.2021, 06:13 2
Демонстрационный пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <vector>
#include <fstream>
#include <iterator>
#include <algorithm>
 
int main() {
    constexpr std::size_t n = 4;
    std::vector<std::vector<int>> matr{n};
    std::ifstream fin("data.txt");
 
    if (!fin) {
        std::cout << "failed to oped file.";
        return 1;
    }
 
    for (auto &row : matr) {
        std::copy_n(std::istream_iterator<int>(fin), n, std::back_inserter(row));
        std::copy(row.begin(), row.end(), std::ostream_iterator<int>(std::cout, "\t"));
        std::cout << "\n";
    }
    fin.close();
 
    return 0;
}
https://onlinegdb.com/7--ZMGx_N
1
0 / 0 / 0
Регистрация: 23.10.2021
Сообщений: 25
16.11.2021, 09:14  [ТС] 3
А можно считать без помощи конструкторов и классов?
0
Модератор
2637 / 1750 / 919
Регистрация: 16.10.2013
Сообщений: 5,065
Записей в блоге: 14
16.11.2021, 09:19 4
Цитата Сообщение от tapni Посмотреть сообщение
А можно считать без помощи конструкторов и классов?
конечно можно:
C++
17
18
19
20
21
22
23
24
for (auto &row : matr) {
    row.resize(n);
    for(int i = 0; i < n; i++) {
        fin >> row[i];
    }
    std::copy(row.begin(), row.end(), std::ostream_iterator<int>(std::cout, "\t"));
    std::cout << "\n";
}
1
0 / 0 / 0
Регистрация: 23.10.2021
Сообщений: 25
16.11.2021, 10:57  [ТС] 5
Извините, а что если в файле уже указана размерность(4)? Поправил таким образом и все выводит, но хотелось бы еще заменить "auto &row : matr" и от итераторов избавиться. Как это можно сделать? Спасибо за помощь
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream> 
#include <vector>
#include <fstream>
#include <iterator>
 
int main() {
    std::ifstream fin("myfile.txt");
    std::size_t n;
    fin >> n;
    std::vector<std::vector<int>> matr{n};
    
 
    if (!fin) {
        std::cout << "failed to open file.";
        return 1;
    }
   
   for (auto &row : matr) {
    row.resize(n);
    for(int i = 0; i < n; i++) {
        fin >> row[i];
    }
    std::copy(row.begin(), row.end(), std::ostream_iterator<int>(std::cout, "\t"));
    std::cout << "\n";
}
  
    fin.close();
    
    return 0;
}
0
Модератор
2637 / 1750 / 919
Регистрация: 16.10.2013
Сообщений: 5,065
Записей в блоге: 14
16.11.2021, 11:24 6
Лучший ответ Сообщение было отмечено tapni как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <vector>
#include <fstream>
#include <iterator>
#include <algorithm>
 
int main() {
    std::size_t n;
    std::ifstream fin("data.txt");
 
    if (!fin) {
        std::cout << "failed to oped file.";
        return 1;
    }
 
    fin >> n;
    std::vector<std::vector<int>> matr{n};
    for (int i = 0; i < n; i++) {
        matr[i].resize(n);
        for(int j = 0; j < n; j++) {
            fin >> matr[i][j];
            std::cout << matr[i][j] << "\t";
        }
        std::cout << "\n";
    }
    fin.close();
 
    return 0;
}
https://onlinegdb.com/o92rEDwAg
1
16.11.2021, 11:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.11.2021, 11:24
Помогаю со студенческими работами здесь

Ошибка при считывании файла
Пожалуйста помогите разобраться почему не находит указанный мною файл. #include &lt;windows.h&gt;...

Ошибка при считывании данных с файла
Среда разработки Visual Studio 2008. Тип проэкта - консольное приложение. Проблема в следующем. ...

Ошибка при считывании матрицы из файла
void readfromfile (FILE * fp, double ** p, int num) { int i,j; for(i=0;i&lt;num;i++) ...

Ошибка при считывании из файла
При считывании файла (есть в архиве, outfile.txt) в 1 строке StringGrid'a (после фиксированной)...

Ошибка при считывании из файла
пишу тестер при кампиляции выдает не понятную ошибку,думаю проблема при считывании вопросов из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru