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

Запись и считование с бинарного файла - C++

Восстановить пароль Регистрация
 
Bangemin
 Аватар для Bangemin
0 / 0 / 0
Регистрация: 06.11.2015
Сообщений: 99
16.06.2016, 09:17     Запись и считование с бинарного файла #1
Доброе утро всем!

Учитель сказал переделать на бинарный файл. Но никак не пойму ка правильно ето осуществить. П.С. В тему не успеваю вникнуть, поскольку защита курсача через 2 часа(

Зарание спасибо

Тут уже немножко переделал

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
Goods::Goods(string file, int good_characteristic_count)
{
    this->good_characteristic_count = good_characteristic_count;
    this->file = file;
    this->good_count = 0;
 
    int characteristic = 0;//характеристика товара записаться должна в стринг
    vector <string> good_characteristic;
 
    fstream file_list(this->file.c_str(), ios::binary | ios::in);// открытие бинарного файла
 
    if(file_list.is_open())
    {
        while(!file_list.eof())
        {
            for(int i = 0; i < this->good_characteristic_count; i++)
            {
                if(file_list.read((char*)&characteristic,sizeof characteristic))// пока можно считать характеристику добавляем ее в стринговий вектор
                {
                    RemoveBottomSpaces(characteristic);
                    good_characteristic.push_back(characteristic);// вот тут
                }
                else
                {
                    good_characteristic.push_back("");
                }
            }
 
            file_list.ignore(255, '\n');
 
            this->good.push_back(good_characteristic);
            good_characteristic.clear();
 
            this->good_count++;
        }
 
        file_list.close();
 
        if(good[0][0] == "")
        {
            this->remove(0);
        }
 
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.06.2016, 09:17     Запись и считование с бинарного файла
Посмотрите здесь:

C++ чтение/запись бинарного файла
Запись и считывание из бинарного файла C++
Запись/чтение бинарного файла C++
C++ Запись бинарного файла
Чтение/запись бинарного файла: необработаное исключение C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4315 / 3736 / 1259
Регистрация: 14.04.2014
Сообщений: 14,653
16.06.2016, 09:21     Запись и считование с бинарного файла #2
А сам файл у тебя есть? Перед чтением бинарного файла, его ещё нужно создать.
Bangemin
 Аватар для Bangemin
0 / 0 / 0
Регистрация: 06.11.2015
Сообщений: 99
16.06.2016, 09:31  [ТС]     Запись и считование с бинарного файла #3
есть 3 файла
были .txt я переделал на

const string storage_file = "Storage.DAT";
const string sold_file = "Sold.DAT";
const string detective_file = "Detective.DAT";
nmcf
4315 / 3736 / 1259
Регистрация: 14.04.2014
Сообщений: 14,653
16.06.2016, 09:38     Запись и считование с бинарного файла #4
Сама запись переделана на write()?
Bangemin
 Аватар для Bangemin
0 / 0 / 0
Регистрация: 06.11.2015
Сообщений: 99
16.06.2016, 09:58  [ТС]     Запись и считование с бинарного файла #5
Вот запись

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
void Goods::save()
{
    fstream file_list(this->file.c_str(), ios::out | ios::trunc);
 
    for(int good_index = 0; good_index < this->good_count; good_index++)
    {
        for(int good_characteristic_index = 0; good_characteristic_index < good_characteristic_count;
                                                                            good_characteristic_index++)
        {
            string good = RemoveSpaces(this->good[good_index][good_characteristic_index]) + " ";
            string::size_type n = good.size(); 
            
            file_list.write((const char*)&n, sizeof(string::size_type));
            file_list.write(good.c_str(), good.size());
            //file_list << RemoveSpaces(this->good[good_index][good_characteristic_index]) << " ";
        }
        if(good_index < this->good_count - 1)
        {
            string nwr = "\n";
            //file_list << endl;
            file_list.write((char*)&nwr, sizeof nwr);
            file_list.flush();
        }
    }
 
    file_list.close();
}
nmcf
4315 / 3736 / 1259
Регистрация: 14.04.2014
Сообщений: 14,653
16.06.2016, 10:20     Запись и считование с бинарного файла #6
С nwr не верно. string должен записываться как в строках 13-14. Да и зачем вообще этот "\n"? Просто записывай good_characteristic_count перед группой.
Bangemin
 Аватар для Bangemin
0 / 0 / 0
Регистрация: 06.11.2015
Сообщений: 99
16.06.2016, 10:23  [ТС]     Запись и считование с бинарного файла #7
ну мне нужно записать например 6 характеристик в 1 строку а потом снова 6 уже в следующей и так каждый товар будет иметь по 6 штук характеристик в своей строке
nmcf
4315 / 3736 / 1259
Регистрация: 14.04.2014
Сообщений: 14,653
16.06.2016, 10:51     Запись и считование с бинарного файла #8
Если их всегда 6, то вообще ничего записывать не надо - просто будешь считывать группами по 6. Если может быть другое количество, то сначала записываешь его (n), затем n строк.
Bangemin
 Аватар для Bangemin
0 / 0 / 0
Регистрация: 06.11.2015
Сообщений: 99
16.06.2016, 10:56  [ТС]     Запись и считование с бинарного файла #9
программа сделана так, что количество параметров неизвестно

Добавлено через 1 минуту
А я вроде так и делаю
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.06.2016, 11:38     Запись и считование с бинарного файла
Еще ссылки по теме:

Запись и чтение структуры из бинарного файла C++
C++ Чтение и запись бинарного файла
C++ Запись/чтение из бинарного файла (.bin)

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

Или воспользуйтесь поиском по форуму:
nmcf
4315 / 3736 / 1259
Регистрация: 14.04.2014
Сообщений: 14,653
16.06.2016, 11:38     Запись и считование с бинарного файла #10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void Goods::save()
{
    fstream file_list(this->file.c_str(), ios::out | ios::trunc);
 
    for(int good_index = 0; good_index < this->good_count; good_index++)
    {
        file_list.write((const char*)&good_characteristic_count, sizeof(good_characteristic_count));
 
        for(int good_characteristic_index = 0; good_characteristic_index < good_characteristic_count; good_characteristic_index++)
        {
            string good = RemoveSpaces(this->good[good_index][good_characteristic_index]) + " ";
            string::size_type n = good.size(); 
            
            file_list.write((const char*)&n, sizeof(string::size_type));
            file_list.write(good.c_str(), good.size());
            //file_list << RemoveSpaces(this->good[good_index][good_characteristic_index]) << " ";
        }
    }
 
    file_list.close();
}
Yandex
Объявления
16.06.2016, 11:38     Запись и считование с бинарного файла
Ответ Создать тему
Опции темы

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