Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
1 / 1 / 1
Регистрация: 21.12.2011
Сообщений: 55

Запись в файл вектора

14.12.2012, 22:22. Показов 3664. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
можете подсказать как записать вектор структур в файл
например
есть vector<game>gamelist
game это структура с полями
int data;
string oppon;
int countplayers;

и также вопрос как обратно потом считать из файла
двоичный файл
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.12.2012, 22:22
Ответы с готовыми решениями:

Запись вектора в файл
Добрый вечер. Есть вектор, содержащий объекты. Мне необходимо записать его в файл, потом считать из него информацию. Как не пытался, все не...

Запись в файл из вектора
ofstream outfile(&quot;ITER.txt&quot;); ostream_iterator&lt;int&gt; Co(outfile,&quot; &quot;); copy(v1.begin(),v1.end(),Co); Есть вектор заполненый...

Запись вектора в файл
Доброго времени суток! Есть структура: struct Clinic { string FIO; char sex; int age; ...

7
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
14.12.2012, 23:04
способов масса.
можно например так.
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
31
32
33
34
35
36
37
38
struct game {...};
// для структуры game пишем операторы << и >>
std::ostream& operator << (std::ostream& out, const game& game)
{
  ...
  return out;
}
std::istream& operator >> (std::istream& in, game& game)
{
  ...
  return in;
}
 
 
в коде:
 
{
  std::vector<game> games;
  ... заполняем вектор
  std::ofstream ofs("data.txt"); // нужные флажочки, бинарный не бинарный и т.п.
  для каждого элемента вектора позвать
  ofs << games[i];
}
 
{
  std::vector<game> games;
  std::ifstream ifs("data.txt"); // нужные флажочки, бинарный не бинарный и т.п.
  пока не дошли до конца стрима, вызываем оператор >>
  while (ifs) // ну или тут какая-то другая проверка должна быть на конец стрима
  {
     game g;
     ifs >> g;
     games.push_back(g);
  }
}
 
можно пользовать спец алгоритмы и не писать циклы вручную,
но с циклами вам будет наверно понятнее.
1
1 / 1 / 1
Регистрация: 21.12.2011
Сообщений: 55
14.12.2012, 23:52  [ТС]
C++
1
ofs<<games[i];
вот этой строчкой мы записываем в файл структуру?
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
14.12.2012, 23:57
лучше всего - перегрузить оператор << и >> для структуры, а потом
C++
1
std::copy(v.begin(), v.end(), std::ostream_iterator<type> (std::cout, " "));
0
1 / 1 / 1
Регистрация: 21.12.2011
Сообщений: 55
15.12.2012, 00:32  [ТС]
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
 
struct game{
    game(int d,string o):data(d),opon(o){}
    int data;
    string opon;
    friend ostream& operator << (std::ostream& out, const game& game){
        out<<game.data<<" "<<game.opon<<endl;
    return out;
    }
    friend istream& operator >> (std::istream& in, game& game){
    int dat;
    string oppon;
    in>>dat;
    in>>oppon;
    game.data=dat;
    game.opon=oppon;
        return in;
    }
 
};
 
int main()
{
 
    vector<game>gamelist;
    int s=2;
    int k=3;
    int n=0;
    string ss="GYY";
    string kk="MADI";
    game g1(s,ss);
    game g2(k,kk);
    gamelist.push_back(g1);
    gamelist.push_back(g2);
    n=gamelist.size();
    ofstream ofs("c://test.txt",ios::binary|ios::out);
    for(int i=0;i<n;n++){
        ofs<<gamelist[i];
    }
 
    ifstream ifs("c://data.txt",ios::binary|ios::in);
  while (ifs)
  {
     game g1(s,ss);
     ifs >> g1;
        cout<<g1;
     gamelist.push_back(g1);
  }
 
}
что-то не получилось,можете посмотреть правильно ли я делаю
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
15.12.2012, 00:49
for(int i=0;i<n;i++){
0
 Аватар для igorrr37
2893 / 2040 / 992
Регистрация: 21.12.2010
Сообщений: 3,790
Записей в блоге: 9
15.12.2012, 01:22
с помощью готовой библиотеки
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <iostream>
#include <string>
#include <boost/archive/binary_oarchive.hpp>
#include <boost/archive/binary_iarchive.hpp>
#include <boost/serialization/vector.hpp>
#include <clocale>
#include <stdexcept>
#include <fstream>
#include <vector>
namespace ba = boost::archive;
 
struct Game
{
    int data;
    std::string opponent;
    int countplayers;
    template<typename Archive>
    void serialize(Archive& ar, unsigned const version)
    {
        ar & data;
        ar & opponent;
        ar & countplayers;
    }
};
 
std::ostream& operator<<(std::ostream& ost, Game const& g)
{
    return ost << g.data << '\n' << g.opponent << '\n' << g.countplayers;
}
 
int main ()
{
    setlocale(LC_ALL, "rus");
    try
    {
        std::vector<Game> v{{1, "op1", 10}, {2, "op2", 20}, {3, "op3", 30}}, vres;
        std::string sfilename("out.bin");
        std::fstream fs(sfilename.c_str(), std::ios::binary | std::ios::out);
        if(!fs.is_open())
            throw std::runtime_error("Unable to open output file");
        ba::binary_oarchive boa(fs);
        boa << v;
        fs.clear();
        fs.close();
        fs.open(sfilename.c_str(), std::ios::binary | std::ios::in);
        if(!fs.is_open())
            throw std::runtime_error("Unable to open input file");
        ba::binary_iarchive bia(fs);
        bia >> vres;
        fs.close();
        for(auto const& val : vres)
            std::cout << val << "\n\n";
    }
    catch(std::exception const& e)
    {
        std::cerr << "Exception: " << e.what() << std::endl;
    }
    return 0;
}
Миниатюры
Запись в файл вектора  
1
1 / 1 / 1
Регистрация: 21.12.2011
Сообщений: 55
15.12.2012, 19:18  [ТС]
C++
1
2
3
#include <boost/archive/binary_oarchive.hpp>
#include <boost/archive/binary_iarchive.hpp>
#include <boost/serialization/vector.hpp>
C++
1
namespace ba = boost::archive;
это подчеркивает и пишет не удается открыть источник файл
также подчеркивает скорее всего из-за этого ba,boa,bia
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.12.2012, 19:18
Помогаю со студенческими работами здесь

Запись в файл вектора обьектов
Здравствуйте, уважаемые форумчане. Есть такое задание. 2 класса(Figure, Square). Figure - базовый клас, с виртуальными методами...

Запись вектора в бинарный файл.
Ребят помогите кто сделать запись в бинарный файл ,а не в текстовый(как в данном коде ) , а то не выходит как то ! заранее спасибо ! ...

Запись вектора в бинарный файл
Здравствуйте, пытаюсь сделать запись вектора из обьектов моего класа в бинарный файл, но получаю не понятного рода символы в значениях...

Запись вектора в бинарный файл
Никак не могу понять как записать вектор в бинарный файл. Подскажите. #include &quot;pch.h&quot; #include&lt;iostream&gt; ...

Запись вектора стуктур в файл
имеется вектор структур struct bb{ string letter; vector&lt;string&gt; word; }; vector&lt;bb&gt; base; как записать её в файл, чтобы...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru