Форум программистов, компьютерный форум 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. Отсортировать полученный массив и вывести результат на экран. а)В массиве С заменить все элементы, следующие за наименьшим элементом единицами. б)Выходные данные: массив А действительных чисел... подробнее

Показать сообщение отдельно
Delix
0 / 0 / 0
Регистрация: 29.03.2013
Сообщений: 22

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

12.04.2013, 13:59. Просмотров 1123. Ответов 15
Метки (Все метки)

Есть структура:
C++
1
2
3
struct Anketa {
    std::string name, family, brith_Date, tel;
};
Надо что бы они записывали в бинарный файл данные и затем можно было считать.

Целиком структуру не получается запихать в бинарник, из-за 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
void Spravochnick::outputFile(const std::string& fname) {
        Node<Anketa>* temp = list.head();
        std::ofstream file_obj(fname.c_str());
        for (int i = 0; i < list.size(); i++){
            
            file_obj.write((char*)(temp->t.name.size()), sizeof(temp->t.name.size()));
            file_obj.write(temp->t.name.c_str(), temp->t.name.size());
            file_obj.write((char*)(temp->t.family.size()), sizeof(temp->t.family.size()));
            file_obj.write(temp->t.family.c_str(), temp->t.family.size());
            file_obj.write((char*)(temp->t.brith_Date.size()), sizeof(temp->t.brith_Date.size()));
            file_obj.write(temp->t.brith_Date.c_str(), temp->t.brith_Date.size());
            file_obj.write((char*)(temp->t.tel.size()), sizeof(temp->t.tel.size()));
            file_obj.write(temp->t.tel.c_str(), temp->t.tel.size());
 
//            В ОБЫЧНЫЙ ФАЙЛ
//            file_obj << temp->t.name << std::endl;
//            file_obj << temp->t.family << std::endl;
//            file_obj << temp->t.brith_Date << std::endl;
//            file_obj << temp->t.tel << std::endl;
            
            temp=temp->_next;
        }
        file_obj.close();
}
 
void Spravochnick::inputFile(const std::string& fname) {
    int s1;
        std::ifstream file_obj(fname.c_str());
        do {    
            Node<Anketa>* temp = new Node<Anketa>;
 
            file_obj.read((char**)&s1, sizeof(int));
            file_obj.read(temp->t.name.c_str(), s1);
//            file_obj.read((char*)(temp->t.family.size()), sizeof(temp->t.family.size()));
//            file_obj.read(temp->t.family.c_str(), temp->t.family.size());
//            file_obj.read((char*)(temp->t.brith_Date.size()), sizeof(temp->t.brith_Date.size()));
//            file_obj.read(temp->t.brith_Date.c_str(), temp->t.brith_Date.size());
//            file_obj.read((char*)(temp->t.tel.size()), sizeof(temp->t.tel.size()));
//            file_obj.read(temp->t.tel.c_str(), temp->t.tel.size());
            
//            В ОБЫЧНЫЙ ФАЙЛ
//            file_obj >> temp->t.name;
//            file_obj >> temp->t.family;
//            file_obj >> temp->t.brith_Date;
//            file_obj >> temp->t.tel;
            list.addTail(temp->t);
        } while (!file_obj.eof());
        list.delTail();
        file_obj.close();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 01:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru