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

string в бинарный файл - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Архитектура программы "Морской бой" http://www.cyberforum.ru/cpp-beginners/thread835734.html
Пишу морской бой, с возможностью игры, как с компьютером, так и с другим человеком по сети. Не получается продумать архитектуру программы. В программе хочу использовать паттерн Strategy, чтоб можно было иметь несколько стратегий игры (AI) и MVC. Код не нужен, буду рад какому-нибудь псевдо-UML'у или простому текстовому описанию как организовать классы в программе.
C++ Найти количество цифр, которые входят в каждое из 3 чисел Даны три натуральных числа А, В, С. Найдите количество цифр, входящих одновременно в состав каждого из для этих чисел. Входные данные: 3 числа, каждое в своей строке, не больше 1000000. Выходные данные: единственное число - искомая величина. Например, на входе: 234087 408209 1804 На выходе: 3 http://www.cyberforum.ru/cpp-beginners/thread835731.html
Игра со спичками C++
Сама игра следующая: на стол выкладывается достаточно большая кучка спичек (не менее 50). Каждый игрок при своем ходе берет спички из кучки. Нужно взять, по крайней мере, одну и не более, чем вдвое больше, чем взял предыдущий игрок. Выигрывает тот, кто берет последнюю спичку. Нужно реализовать выигрышную стратегию для компьютера.
C++ Принадлежит ли точка заштрихованой области? C++ (VS 2010)
Вот получилось, но как добавить, чтобы проверять треугольники и окружность?? #include <iostream> using namespace std; int main() { setlocale (0, "Russian"); double x,y; cout<<"Введите Х : ";
C++ Задачи с олимпиады http://www.cyberforum.ru/cpp-beginners/thread835718.html
Помогите разобраться с данными задачами с олимпиады: 1. Вводиться 3 остатка от деления числа на 971, 997 и 1033. Вывести это число. Например: I: 5 10 15 O: 835049324 Ограничения: 64 мб памяти, время 1 с Мое решение: #include <iostream>
C++ Сформировать массив указанной размерности и типа 1. Сформировать массив указанной размерности и типа. 2. Выполнить необходимые преобразования. 3. Вывести входные и преобразованные данные, предоставив им соответствующие комментарии. 4. Отсортировать полученный массив и вывести результат на экран. а)В массиве С заменить все элементы, следующие за наименьшим элементом единицами. б)Выходные данные: массив А действительных чисел... подробнее

Показать сообщение отдельно
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
12.04.2013, 15:08     string в бинарный файл
попытка реализации
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
60
61
62
63
#include <iostream>
#include <fstream>
#include <string>
 
struct Anketa
{
    std::string name, family, birthdate, tel;
};
 
std::ostream& operator<<(std::ostream& ost, Anketa const& a)
{
    return ost << a.name << '\n' << a.family << '\n' << a.birthdate << '\n' << a.tel;
}
 
int main()
{
    std::ofstream ofs("out.txt", std::ios::binary);
    std::string::size_type length;
    if(ofs.is_open())
    {
        Anketa arr[] = {Anketa{"name1", "family1", "birthdate1", "tel1"},
                        Anketa{"name2", "family2", "birthdate2", "tel2"},
                        Anketa{"n3", "f3", "bd3", "t3"}};
        for(auto const& val : arr)
        {
            length = val.name.size();
            ofs.write((char const*)&length, sizeof(length)).write(val.name.data(), length);
            length = val.family.size();
            ofs.write((char const*)&length, sizeof(length)).write(val.family.data(), length);
            length = val.birthdate.size();
            ofs.write((char const*)&length, sizeof(length)).write(val.birthdate.data(), length);
            length = val.tel.size();
            ofs.write((char const*)&length, sizeof(length)).write(val.tel.data(), length);
        }
        ofs.close();
        std::ifstream ifs("out.txt", std::ios::binary);
        if(ifs.is_open())
        {
            Anketa tmp;
            while(ifs.read((char*)&length, sizeof(length)))
            {
                tmp.name.resize(length);
                ifs.read(&tmp.name[0], length);
                ifs.read((char*)&length, sizeof(length));
                tmp.family.resize(length);
                ifs.read(&tmp.family[0], length);
                ifs.read((char*)&length, sizeof(length));
                tmp.birthdate.resize(length);
                ifs.read(&tmp.birthdate[0], length);
                ifs.read((char*)&length, sizeof(length));
                tmp.tel.resize(length);
                ifs.read(&tmp.tel[0], length);
                std::cout << tmp << "\n\n";
            }
            ifs.close();
        }
        else
            std::cerr << "Unable to open input file\n";
    }
    else
        std::cerr << "Unable to open output file\n";
    return 0;
}
а вообще да, кто-нибудь, вбросьте на boost
 
Текущее время: 22:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru