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

Как сохранить контейнеры STL в файл. И как потом их прочитать из файла - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вывод черных и белых пиксилей на экран http://www.cyberforum.ru/cpp-beginners/thread1139398.html
Помогите написать программу, выводящую черные и белые полосы по горизонтали и вертикали по заданному разрешению. Например вписываю 800х600, то мне и выводит 800 вертикальных и 600 горизонтальных полос. Пока что в примере у меня есть такой код #include <vga.h> #include <unistd.h> #include <stdio.h> int main(int argc, char* argv) { int i, k;
C++ Rand() metka: r1=rand()%2; r2=rand()%2; if(r1==a && r2==b)goto metka; else arr=='O'; Собсно-это кусок кода "крестиков-ноликов".Перед этим куском кода,пользователь вводит первый "крестик".Поэтому ИИ тоже предстоит поставить первый "нолик",но так как он первый,то он ставит его рандомно. Поэтому переменным r1 и r2 присваиваются рандомные значения от 0 до 2(массив).Потом идёт... http://www.cyberforum.ru/cpp-beginners/thread1139393.html
C++ Создание специального браузера
Добрый день. Занимаюсь программированием года 3. В основном работал в вебе, но не в этом суть. Для моей будущей научной работы нужно создать специфичный браузер для инвалидов по зрению. Будет много исследований и работы с самым "прямым" пользователем, в общем благое дело, но трудное. Прошу помощи вот в чем, браузер будет на движке
C++ Программа определяющая является ли 2 строка перевёрнутой первой
Код C #include<iostream> #include<conio.h> #include<cstring> using namespace std; int main() {
C++ Построение конечного автомата по регулярной грамматике http://www.cyberforum.ru/cpp-beginners/thread1139360.html
G=({S, C, D}, {0, 1}, P, S) P: 1) S→1C | 0D; 2) C→0D | 0S | 1; 3) D→1C | 1S | 0. Нужно выполнить: 1) ввод произвольной формальной грамматики с клавиатуры и проверка ее на принадлежность к классу регулярных грамматик; 2) построение по заданной регулярной грамматике конечного автомата;
C++ Русский язык Уже задолбался с попыткой заставить выводить считанные русские строки. Имеем. По идее там должна быть функция CharToOem но она коверкает. А вот функции OemToChar и OemToAnsi нормально преобразовывают русские буквы. Но откуда ни возьмись появляется ошибка при вводе английских символов. Ошибка в стеке переменной b #include <iostream> #include <stdio.h> #include <stdlib.h> #include <clocale>... подробнее

Показать сообщение отдельно
hustler1987
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 11
05.04.2014, 16:15  [ТС]     Как сохранить контейнеры STL в файл. И как потом их прочитать из файла
Вот так работает в QT сохранение map контейнера:
C++ (Qt)
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
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
#include <QtCore>
#include <QtGui>
#include <QMessageBox>
#include <QFileDialog>
#include <QSystemTrayIcon>
 
#include "formslovoperevod.h"
 
namespace Ui {
class MainWindow;
}
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
public:
    explicit MainWindow(QWidget *parent = 0);
    //explicit FormSlovoPerevod(QWidget *parent = 0);
    ~MainWindow();
 
private:
    Ui::MainWindow *ui;
    FormSlovoPerevod *fsp;
    //Ui::MainWindow *FormSlovoPerevod;
public:
    QString FileOpen;
    QMap<QString,QString> map;
    void vivod();
public slots:
    void OnTimeout();
    void SelectSlovo();
private slots:
    void on_pushButtonAdd_clicked();
    void on_pushButtonClear_clicked();
    void on_actionOpen_triggered();
    void on_actionSave_triggered();
    void on_actionExit_triggered();
};
 
#endif // MAINWINDOW_H
//h файл
C++ (Qt)
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "formslovoperevod.h"
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{    
    ui->setupUi(this);
    this->setWindowTitle("Словарик");
    FileOpen = "baza.bin";
    QFile file(FileOpen);
    if (file.open(QIODevice::ReadOnly)) {
        QDataStream stream(&file);
        stream>>map;
        if (stream.status() != QDataStream::Ok ) {
            QMessageBox::critical(0,"Ошибка чтения", "Чтение контейнера не было осуществлено");
        }
    }
    file.close();
    vivod();
    QTimer* timer = new QTimer(this);
    connect(timer,SIGNAL(timeout()), this,SLOT(OnTimeout()));
    timer->start(1000);
    connect(ui->listWidgetSlova,SIGNAL(itemSelectionChanged()),SLOT(SelectSlovo()));
    vivod();
    ui->actionOpen->setStatusTip(tr("Открыть файл словаря..."));
    ui->actionSave->setStatusTip(tr("Сохранить словарь в файл..."));
    ui->actionExit->setStatusTip(tr("Выход из программы"));
    QSystemTrayIcon* trayicon = new QSystemTrayIcon(this);
    QIcon* icontray = new QIcon(QPixmap(":/imgs/icontray.ico"));
    this->setWindowIcon(QIcon(":/imgs/icontray.ico"));
    trayicon->setIcon(*icontray);
    trayicon->setVisible(true);
    trayicon->show();
    fsp = new FormSlovoPerevod();
    fsp->show();
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
void MainWindow::vivod()
{
    ui->listWidgetSlova->clear();
    QMapIterator<QString,QString> it(map);
    while (it.hasNext()){
        it.next();
        ui->listWidgetSlova->addItem(it.key());
    }
    ui->centralWidget->setStatusTip(tr("Всего слов: ") + QString::number(ui->listWidgetSlova->count()));
 
}
 
void MainWindow::OnTimeout()
{
 
}
 
void MainWindow::SelectSlovo()
{
    QListWidgetItem* item = ui->listWidgetSlova->currentItem();
    ui->TextEditPerevod->setText(map[item->text()]);
}
 
void MainWindow::on_pushButtonAdd_clicked()
{
    QString* slovo = new QString(ui->EditSlovoAdd->text());
    QString* perevod = new QString(ui->TextEditAdd->toPlainText());
    if (map.contains(*slovo)) {
        QMessageBox::critical(0,"Повторное добавление","Данное слово уже есть в базе данных");
    } else {
        map.insert(*slovo,*perevod);
        ui->listWidgetSlova->addItem(*slovo);
    }
    vivod();
}
 
void MainWindow::on_pushButtonClear_clicked()
{
    ui->EditSlovoAdd->clear();
    ui->TextEditAdd->clear();    
}
 
void MainWindow::on_actionOpen_triggered()
{
    FileOpen  = QFileDialog::getOpenFileName(this, "Открыть словарь", "", tr("Файл словаря(*.bin)"));
    if (FileOpen.isNull()) return;
    QFile file(FileOpen);
    if (file.open(QIODevice::ReadOnly)) {
        QDataStream stream(&file);
        stream>>map;
        if (stream.status() != QDataStream::Ok ) {
            QMessageBox::critical(0,"Ошибка чтения", "Чтение контейнера не было осуществлено");
        }
    }
    file.close();
    vivod();
}
 
void MainWindow::on_actionSave_triggered()
{
    FileOpen  = QFileDialog::getSaveFileName(0,"Сохранить словарь","",
                                                     tr("Файл словаря(*.bin)"));
    if (FileOpen.isNull()) return;
    if (!FileOpen.endsWith(".bin")) FileOpen.append(".bin");
    QFile file(FileOpen);
    if (file.open(QIODevice::WriteOnly)) {
        QDataStream stream(&file);
        stream<<map;
        if (stream.status() != QDataStream::Ok ) {
            QMessageBox::critical(0,"Ошибка записи", "Запись контейнера не была осуществлена");
        }
    }
    file.close();
}
 
void MainWindow::on_actionExit_triggered()
{
        this->close();
}

А как сохранение организовать в Builder???
 
Текущее время: 17:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru