Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.65/23: Рейтинг темы: голосов - 23, средняя оценка - 4.65
Noname2512
4 / 4 / 0
Регистрация: 25.06.2010
Сообщений: 106
1

Как считать вектор из файла?

05.08.2011, 19:39. Просмотров 4421. Ответов 18
Метки нет (Все метки)

как считать вектор из файла?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.08.2011, 19:39
Ответы с готовыми решениями:

Как считать матрицу из файла в двумерный вектор
Доброго времени суток, начал писать шифр Скитала И столкнулся с такой...

Считать вектор из файла, записать вектор в файл
Доброго времени суток. Программа должна считывать числа из заданного файла,...

Считать посимфольно из файла в char вектор
Например в файле записаны: aaaaaaa bbbbbbb надо считать первую строчку в...

Считать слова строк из файла в вектор векторов
допустим есть вектор векторов vector<vector<string>> V1 ; как считать из файла...

ifstream (считать матрицу из файла в двумерный вектор)
нужно из файла считать матрицу в двумерный вектор. файл выглядит так: 2 9 6 5...

18
Сыроежка
Заблокирован
05.08.2011, 19:41 2
Цитата Сообщение от Noname2512 Посмотреть сообщение
как считать вектор из файла?

На мой взгляд самый простой способ - это с помощью стандартного алгоритма std::copy, где задаются входные итераторы для файла, а выходный итератор - этот итератор вставки для вектора
0
Noname2512
4 / 4 / 0
Регистрация: 25.06.2010
Сообщений: 106
05.08.2011, 19:44  [ТС] 3
а если мне следует брать не все элементы файла, а токо те которые соответствуют
определенным параметрам ? если не сложно с примером
0
Сыроежка
Заблокирован
05.08.2011, 19:50 4
Цитата Сообщение от Noname2512 Посмотреть сообщение
а если мне следует брать не все элементы файла, а токо те которые соответствуют
определенным параметрам ? если не сложно с примером
Тогда можно написать свой алгоритм copy_if с предикатом, в котором будет задано условие.

copy( std::istream_iterator<int>( SomeStream ), std::istream_iterator<int>(),
std::back_inserter( v ), predicate );

То есть я лично бы так написал. А вам скорей всего нужно открыть входной поток

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include  <fstream>
 
int main()
{
   std::ifstream in( "FileName" );
 
   if ( !in )
   {
      std::cout << "Error!\n";
      exit( EXIT_FAILURE );
   }
 
   while ( !in )
   {
   /// здесь читаете файл и записываете данные в вектор с помощью v.push_back( value )
   }
 
   in.close();
 
   return ( EXIT_SYCCESS );
}
1
PointsEqual
ниначмуроФ
841 / 525 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
05.08.2011, 20:13 5
C++
1
EXIT_SUCCESS
Добавлено через 5 минут
C++
1
while ( !in )
тогда ничего не запишется
0
ValeryLaptev
Эксперт С++
1050 / 829 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
05.08.2011, 20:13 6
Цитата Сообщение от Noname2512 Посмотреть сообщение
как считать вектор из файла?
Чтобы считать вектор из файла, надо его туда сначала записать. Как только разберетесь, как записать вектор в файл, вопрос про чтение отпадет сам собой...
0
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
05.08.2011, 20:55 7
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <fstream>
#include <vector>
#include <iterator>
int main(){
    std::ifstream input("input.txt");
    std::vector<int> vec;
    std::copy(std::istream_iterator<int> (input), std::istream_iterator<int>(), std::back_inserter(vec) );
    std::copy(vec.begin(), vec.end(), std::ostream_iterator<int> (std::cout, " ") );
}
Чтобы считать вектор из файла, надо его туда сначала записать.
А руками вбить - не вариант?)
0
ValeryLaptev
Эксперт С++
1050 / 829 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
05.08.2011, 21:00 8
Цитата Сообщение от diagon Посмотреть сообщение
[CPP]#include <iostream>

А руками вбить - не вариант?)
Руками вбить - это НЕ вектор - это набор чисел.
Набор чисел может быть устроен КАК угодно. Мы его просто читаем стандартными средствами и помещаем в вектор. Это не то же самое, что "читать вектор".
1
PointsEqual
ниначмуроФ
841 / 525 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
05.08.2011, 21:01 9
а как при помощи
C++
1
std::copy
считать матрицу из файла в
C++
1
std::vector<std::vector<int> >
?
0
Noname2512
4 / 4 / 0
Регистрация: 25.06.2010
Сообщений: 106
06.08.2011, 17:46  [ТС] 10
народ почему при компиляции ошибок нет, а когда выполняю выскакивает окно :
Debug assertion failed!
вот на этой строке
C++
1
matrix[i][j] = n; // vector< vector<int> >  matrix;
0
PointsEqual
ниначмуроФ
841 / 525 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
06.08.2011, 19:09 11
Цитата Сообщение от Noname2512 Посмотреть сообщение
народ почему при компиляции ошибок нет, а когда
ты так создал матрицу?
C++
1
2
const int G = 8;
vector<vector<int> > m(G, vector<int>(G));
0
Noname2512
4 / 4 / 0
Регистрация: 25.06.2010
Сообщений: 106
06.08.2011, 19:22  [ТС] 12
нет, я написал токо : vector< vector<int> > matrix;
0
PointsEqual
ниначмуроФ
841 / 525 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
06.08.2011, 19:22 13
Цитата Сообщение от Noname2512 Посмотреть сообщение
нет, я написал токо : vector< vector<int> > matrix;
исправь
1
Noname2512
4 / 4 / 0
Регистрация: 25.06.2010
Сообщений: 106
06.08.2011, 19:34  [ТС] 14
а что означает выражение в круглых скобках ?
0
Сыроежка
Заблокирован
06.08.2011, 20:37 15
Цитата Сообщение от Noname2512 Посмотреть сообщение
а что означает выражение в круглых скобках ?
Если я правильно понял ваш вопрос, то в круглах скобках задано начальное количество элементов вектора, которое выражено в виде const int G = 8;
0
ValeryLaptev
Эксперт С++
1050 / 829 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
06.08.2011, 20:56 16
Цитата Сообщение от Сыроежка Посмотреть сообщение
Если я правильно понял ваш вопрос, то в круглах скобках задано начальное количество элементов вектора, которое выражено в виде const int G = 8;
B каждый из этих 8-ми элементов вектора инициализируется вектором же...
0
PointsEqual
ниначмуроФ
841 / 525 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
06.08.2011, 21:57 17
Цитата Сообщение от Noname2512 Посмотреть сообщение
а что означает выражение в круглых скобках ?
вызываются конструкторы, выделяется память

можно и подругому заполнить:
C++
1
2
3
4
5
6
7
8
9
10
11
    vector<vector<int> > m(G);
 
    vector<int> t(G);
    m[0] = t;
    m[1] = t;
    m[2] = t;
    m[3] = t;
    m[4] = t;
    m[5] = t;
    m[6] = t;
    m[7] = t;
0
Noname2512
4 / 4 / 0
Регистрация: 25.06.2010
Сообщений: 106
07.08.2011, 08:21  [ТС] 18
у меня частенько ошибку вызывает когда я выхожу за пределы g
как быть если я не знаю сколько элементов будет в матрице ?(я знаю скоко столбов)
0
OstapBender
584 / 523 / 75
Регистрация: 22.03.2011
Сообщений: 1,585
07.08.2011, 15:16 19
1) посчитать
2) в 1ой строке файла держать размер массива
3) юзать любой динамически расширяемый массив (e.g. вектор)
0
07.08.2011, 15:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.08.2011, 15:16

Считать данные из файла и записать в вектор (запись происходит неправильно)
есть функция которая читывает с файла и записывает в вектор, но при записывание...

С помощью cin.getline считать все строки файла в контейнер (вектор или очередь)
Можете пожалуйсто написать код, где можно с помощью cin.getline считать все...

Как считать файлы в вектор, который содержится в объекте пользовательского класса?
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;vector&gt; #include &lt;fstream&gt;...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru