Форум программистов, компьютерный форум CyberForum.ru

Как считать матрицу из файла в двумерный вектор - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Программа для вывода на экран содержимого изменяющегося файла http://www.cyberforum.ru/cpp-beginners/thread681707.html
Некая программа периодически изменяет содержимое файла. Для простоты пусть этот файл будет всегда иметь размер 400 байт и содержать в себе 25 строк по 80 символов каждый. Поэтому его содержимое можно напрямую копировать в консоль. Символы - только ASCII7. Вот как примерно такой файл выглядит: A = 1...(куча пробелов, чтобы довести строку до 78 символов)...\n\r B = 2...пробелы...\n\r 78...
C++ Нужно количество цифр с рекурсивной функцией Не могу найти ошибку. Надо найти кол-во цифр введённого числа с помощью рекурсивной функции. #include <iostream> using namespace std; int sum=0; int quantity (int); int quantity (int n) { if(n!=0) { sum++; return quantity (n/=10); } else sum; http://www.cyberforum.ru/cpp-beginners/thread681703.html
Константный указатель C++
Почему в данном примере константный указатель может быть использован для вывода элементов вектора? #include <iostream> #include <vector> int main() { std::vector<int> v; std::vector<int>::pointer p; std::vector<int>::const_pointer cp; v.reserve(10); // Резервируем минимальный размер
C++ Считывание двумерного массива из файла
Надо считать двумерный целочисленный массив из файла, причем конец строчка имеет разный размер, конец строки обозначается нулем, но количество столбцов постоянно. Например: 6 1 2 0 3 1 0 1 1 1 0 5 0 2 1 1 0 1 0
C++ Односвязный список http://www.cyberforum.ru/cpp-beginners/thread681686.html
Class.h #include "stdafx.h" #include<iostream> #include<string> using namespace std; struct element { element* next;
C++ Наследование классов: реализовать классы точка, линия, треугольник, круг задачка интересная,но как сделать ее-я не представляю... можете помочь.. подробнее

Показать сообщение отдельно
Tiva
94 / 94 / 1
Регистрация: 25.04.2012
Сообщений: 429
12.11.2012, 15:20     Как считать матрицу из файла в двумерный вектор
Цитата Сообщение от gray_fox Посмотреть сообщение
2008kedr2008, так попробуй:
C++
1
2
3
4
5
6
7
8
9
10
std::ifstream ifs("filename");
std::size_t const n = 4;
std::vector<std::vector<int> > matrix;
matrix.reserve(n);   
   
std::string line;
for (std::size_t i = 0; (i != n) && std::getline(ifs, line); ++i) {
   std::istringstream iss(line);
   matrix.push_back(std::vector<int>(std::istream_iterator<int>(iss), std::istream_iterator<int>()));
}
Добавлено через 17 минут
Хотя глупость написал
C++
1
2
3
4
5
6
7
8
std::ifstream ifs("filename");
std::vector<std::vector<int> > matrix(4, std::vector<int>(4));
 
for (std::size_t i = 0; i != matrix.size(); ++i) {
   for (std::size_t j = 0; j != matrix[i].size(); ++j) {
      ifs >> matrix[i][j];
   }
}
вот мой пример(ваш не подходит, т.к. вектор изначально пустой, и кол-во элементов в файле не известно и надо пушбечить)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void Matrix::LoadMatrix()
{
    
    ifstream ifst(FNAME_MATRIX);
    while(!ifst.eof())
    {
                int temp;
 
                ifst >> temp;
        matrix_iterator iterlvl2;
        vector< int >::iterator iterlvl1;
        for (iterlvl2=v.begin();iterlvl2 != v.end();iterlvl2++) 
        {
            iterlvl1 = (*iterlvl2).begin();
            (*iterlvl2).push_back(temp);
        }
    }
}
только он считывает весь файл в одну строку, а не так, как он хранится в файле. помогите.
 
Текущее время: 21:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru