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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.63
Noname2512
4 / 4 / 1
Регистрация: 25.06.2010
Сообщений: 106
#1

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

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

как считать вектор из файла?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.08.2011, 19:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как считать вектор из файла? (C++):

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

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

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

ifstream (считать матрицу из файла в двумерный вектор) - C++
нужно из файла считать матрицу в двумерный вектор. файл выглядит так: 2 9 6 5 4 8 4 5 8 9 5 4 8 6 4 5 8 6 5 8 4 прошу помощи !

Считать слова строк из файла в вектор векторов - C++
допустим есть вектор векторов vector<vector<string>> V1 ; как считать из файла слова, записанные в строку, так чтобы каждое слово было...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Сыроежка
Заблокирован
05.08.2011, 19:41 #2
Цитата Сообщение от Noname2512 Посмотреть сообщение
как считать вектор из файла?

На мой взгляд самый простой способ - это с помощью стандартного алгоритма std::copy, где задаются входные итераторы для файла, а выходный итератор - этот итератор вставки для вектора
0
Noname2512
4 / 4 / 1
Регистрация: 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
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
05.08.2011, 20:13 #5
C++
1
EXIT_SUCCESS
Добавлено через 5 минут
C++
1
while ( !in )
тогда ничего не запишется
0
ValeryLaptev
Эксперт С++
1041 / 820 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
05.08.2011, 20:13 #6
Цитата Сообщение от Noname2512 Посмотреть сообщение
как считать вектор из файла?
Чтобы считать вектор из файла, надо его туда сначала записать. Как только разберетесь, как записать вектор в файл, вопрос про чтение отпадет сам собой...
0
diagon
Higher
1929 / 1195 / 49
Регистрация: 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
Эксперт С++
1041 / 820 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
05.08.2011, 21:00 #8
Цитата Сообщение от diagon Посмотреть сообщение
[CPP]#include <iostream>

А руками вбить - не вариант?)
Руками вбить - это НЕ вектор - это набор чисел.
Набор чисел может быть устроен КАК угодно. Мы его просто читаем стандартными средствами и помещаем в вектор. Это не то же самое, что "читать вектор".
1
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 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 / 1
Регистрация: 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
ниначмуроФ
836 / 520 / 33
Регистрация: 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 / 1
Регистрация: 25.06.2010
Сообщений: 106
06.08.2011, 19:22  [ТС] #12
нет, я написал токо : vector< vector<int> > matrix;
0
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
06.08.2011, 19:22 #13
Цитата Сообщение от Noname2512 Посмотреть сообщение
нет, я написал токо : vector< vector<int> > matrix;
исправь
1
Noname2512
4 / 4 / 1
Регистрация: 25.06.2010
Сообщений: 106
06.08.2011, 19:34  [ТС] #14
а что означает выражение в круглых скобках ?
0
Сыроежка
Заблокирован
06.08.2011, 20:37 #15
Цитата Сообщение от Noname2512 Посмотреть сообщение
а что означает выражение в круглых скобках ?
Если я правильно понял ваш вопрос, то в круглах скобках задано начальное количество элементов вектора, которое выражено в виде const int G = 8;
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.08.2011, 20:37
Привет! Вот еще темы с ответами:

Как корректно считать вектор boost::asio::streambuf на стороне клиента - C++
Доброго времени суток! Назрел вопрос: Пишу в сокет с помощью boost::asio::buffer std::vector&lt;double&gt;. а вот как на стороне клиента...

Как считать файлы в вектор, который содержится в объекте пользовательского класса? - C++
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;vector&gt; #include &lt;fstream&gt; using namespace std; class email { private: ...

Как считать с файла - C++
Вечер добрый! Не могли бы подсказать , как считать с файла в list(список) объект.

Как считать массив из файла - C++
Здравствуйте!!!я новичек в с++ и не могу решить задачу :как считать координаты точек и радиус из тестового файла...там получается надо...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
06.08.2011, 20:37
Ответ Создать тему
Опции темы

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