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

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

Войти
Регистрация
Восстановить пароль
 
Bangemin
0 / 0 / 0
Регистрация: 06.11.2015
Сообщений: 99
#1

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

16.06.2016, 09:17. Просмотров 159. Ответов 9
Метки нет (Все метки)

Доброе утро всем!

Учитель сказал переделать на бинарный файл. Но никак не пойму ка правильно ето осуществить. П.С. В тему не успеваю вникнуть, поскольку защита курсача через 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);
        }
 
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.06.2016, 09:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Запись и считование с бинарного файла (C++):

Запись бинарного файла - C++
Чисто теоретически функция input должна была записать в файл аброкадабру(из-за двоичного режима(binary)), но к сожалению запись идёт такая...

Запись/чтение бинарного файла - C++
Здавствуйте, помогите, пожалуйста, с чтением и записью объекта в бинарный файл. Пишут, что невозможно записать в бинарный файл, если в...

Чтение и запись бинарного файла - C++
Добрый день! Есть задача прочитать с бинарного файла информацию, обработать ее и записать результат в бинарный файл. #include &quot;stdafx.h&quot;...

Запись и считывание из бинарного файла - C++
Допустим я реализовываю АТД - контейнер. Там будет функция обновления (Все данные скопировать в файл на жестком дискке, а потом обратно)....

Запись, перезапись бинарного файла - C++
В 1 файле случайные числа, во второй записать те которые кратные 7 и 9. Подскажите почему не происходит запись во 2рой файл. #include...

Чтение/запись бинарного файла - C++
Надо проверить корректно ли работает стек. #include &quot;stack.h&quot; #include &lt;fstream&gt; #include &lt;iostream&gt; using namespace std; ...

9
nmcf
5680 / 4991 / 1701
Регистрация: 14.04.2014
Сообщений: 20,362
16.06.2016, 09:21 #2
А сам файл у тебя есть? Перед чтением бинарного файла, его ещё нужно создать.
0
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";
0
nmcf
5680 / 4991 / 1701
Регистрация: 14.04.2014
Сообщений: 20,362
16.06.2016, 09:38 #4
Сама запись переделана на write()?
0
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();
}
0
nmcf
5680 / 4991 / 1701
Регистрация: 14.04.2014
Сообщений: 20,362
16.06.2016, 10:20 #6
С nwr не верно. string должен записываться как в строках 13-14. Да и зачем вообще этот "\n"? Просто записывай good_characteristic_count перед группой.
0
Bangemin
0 / 0 / 0
Регистрация: 06.11.2015
Сообщений: 99
16.06.2016, 10:23  [ТС] #7
ну мне нужно записать например 6 характеристик в 1 строку а потом снова 6 уже в следующей и так каждый товар будет иметь по 6 штук характеристик в своей строке
0
nmcf
5680 / 4991 / 1701
Регистрация: 14.04.2014
Сообщений: 20,362
16.06.2016, 10:51 #8
Если их всегда 6, то вообще ничего записывать не надо - просто будешь считывать группами по 6. Если может быть другое количество, то сначала записываешь его (n), затем n строк.
0
Bangemin
0 / 0 / 0
Регистрация: 06.11.2015
Сообщений: 99
16.06.2016, 10:56  [ТС] #9
программа сделана так, что количество параметров неизвестно

Добавлено через 1 минуту
А я вроде так и делаю
0
nmcf
5680 / 4991 / 1701
Регистрация: 14.04.2014
Сообщений: 20,362
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();
}
0
16.06.2016, 11:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.06.2016, 11:38
Привет! Вот еще темы с ответами:

Запись/чтение из бинарного файла (.bin) - C++
Беру информацию из текстового файла, записываю в двоичный и вывожу информацию на экран уже из двоичного файла. Если текстовый файл...

Запись и чтение структуры из бинарного файла - C++
Проблема заключается в том, что, когда идёт запись и считка с бин. файла - нормально выводит лишь первый элемент,а второй и тд. - иные...

Чтение/запись бинарного файла: необработаное исключение - C++
Здравствуйте. Есть данный код: #ifdef _MSC_VER #define _CRT_SECURE_NO_WARNINGS #endif #include &lt;iostream&gt; #include &lt;string&gt;...

Запись и чтение из бинарного файла, объяснить поведение программы - C++
Добрый день! Подскажите, есть код #include &lt;fstream&gt; #include &lt;iostream&gt; using namespace std; int main() {


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

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