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

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

14.12.2012, 22:22. Показов 3646. Ответов 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
2869 / 2016 / 991
Регистрация: 21.12.2010
Сообщений: 3,724
Записей в блоге: 15
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
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru