5 / 18 / 6
Регистрация: 15.10.2017
Сообщений: 159
1

Преоброзовать T в char* и записать объект в файл

10.01.2022, 15:20. Показов 470. Ответов 9

user
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <string>
using namespace std;
class User {
public:
    int _id;
    string _name;
    User() : _id{ 0 }, _name{ "" } {  }
    User(int id, string name) { _id = id; _name = name; }
    int GetId() { return _id; }
    void SettId(int id) { _id = id; }
    string GetName() { return _name; }
    void SettName(string name) { _name = name; }
};
class File
C++
1
2
    static void SimpleSerialization(T& object, string path);
    static void SimpleDeserialization(T& object, string path);
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
template<class T>
void File<T>::SimpleSerialization(T& object, string path)
{
    ifstream in(path);
    in.read((char*)object, sizeof(object));
    in.close();
}
 
template<class T>
void File<T>::SimpleDeserialization(T& object, string path)
{
    ofstream out(path);
    out.write((char*)object, sizeof(object));
    out.close();
}
main.cpp
C++
1
2
3
4
5
6
7
8
9
int main(int argc,char* argv[])
{
    User users[] = {
        { 1, "Bob" },
        { 2, "Alex" },
        { 3, "Petr" },
    };
    File<User>::SimpleSerialization(*users, File<User>::GetPath("user.txt"));
}
Как преоброзавать в char T type? Я хочу записать массив объектов user в файл
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.01.2022, 15:20
Ответы с готовыми решениями:

Как преоброзовать string и char
Нужно решить проблему: program MyGame; Uses graphabc; //Используем модуль графики(graphabc) var...

Надо записать дробь, грубо говоря, в виде char* fract = char numer + '/' + char denomen
Пытался сделать это strcat'ом, но ошибка в стиле :&quot;Эта функция сулит потерю данных&quot;. #define...

Создать файл и записать в него char[]
Ребята нужна помощь . У меня имеется переменная типа char (массив) которая содержит текст , моя...

Как записать объект в файл?
как все данные из объекта записать в файл, без использования дженериков (for myObject in List), у...

9
16094 / 8692 / 2124
Регистрация: 30.01.2014
Сообщений: 14,984
10.01.2022, 16:32 2
Цитата Сообщение от Terabiterr Посмотреть сообщение
Как преоброзавать в char T type? Я хочу записать массив объектов user в файл
Вы не можете записать объекты такого класса с помощью SimpleSerialization, потому что класс User не является тривиальным. Никакие преобразования не помогут, даже если оно скомпилируется, то работать правильно не будет.
Для T == User должен быть другой вид сериализации, не `Simple`, а почленный, с сохранением информации о размере строки.
1
530 / 177 / 39
Регистрация: 18.08.2012
Сообщений: 857
Записей в блоге: 1
10.01.2022, 16:45 3
напоминает: https://docs.microsoft.com/ru-... w=msvc-170
1
С чаем беда...
Эксперт CЭксперт С++
10008 / 5354 / 1467
Регистрация: 18.10.2014
Сообщений: 12,911
10.01.2022, 19:18 4
Цитата Сообщение от Terabiterr Посмотреть сообщение
Как преоброзавать в char T type? Я хочу записать массив объектов user в файл
Распространенные ошибки

Там, в частности, есть пример, как записывается std::string в бинарный файл.

Цитата Сообщение от Terabiterr Посмотреть сообщение
Я хочу записать массив объектов user в файл
Непонятно только, почему ваша функция сериализации все время открывает и закрывает файл для записи каждого индивидуального объекта.
1
5 / 18 / 6
Регистрация: 15.10.2017
Сообщений: 159
10.01.2022, 20:51  [ТС] 5
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Непонятно только, почему ваша функция сериализации все время открывает и закрывает файл для записи каждого индивидуального объекта.
это тестовый вариант, там в строке
C++
1
in.read((char*)object, sizeof(object));
ошибка преобразования T в char
0
С чаем беда...
Эксперт CЭксперт С++
10008 / 5354 / 1467
Регистрация: 18.10.2014
Сообщений: 12,911
10.01.2022, 21:01 6
Цитата Сообщение от Terabiterr Посмотреть сообщение
ошибка преобразования T в char
Так а что такое "преобразования T в char" вообще? Что это должно делать?

При этом я в коде у вас вижу преобразование T в char *, а не в char.
0
5 / 18 / 6
Регистрация: 15.10.2017
Сообщений: 159
10.01.2022, 21:26  [ТС] 7
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Так а что такое "преобразования T в char" вообще? Что это должно делать?
Для побайтовой записи данных в файл.
C++
1
 in.read((char*)object, sizeof(object));
(char*)object - (buffer)
sizeof(object) - размер в байтах
0
С чаем беда...
Эксперт CЭксперт С++
10008 / 5354 / 1467
Регистрация: 18.10.2014
Сообщений: 12,911
10.01.2022, 21:28 8
Цитата Сообщение от Terabiterr Посмотреть сообщение
Для побайтовой записи данных в файл.
C++
1
 in.read((char*)object, sizeof(object));
(char*)object - (buffer)
sizeof(object) - размер в байтах
Ну так, еще раз, почему вы нам тут рассказываете про преобразование к char если в коде ясно видно преобразование к char *?
0
5 / 18 / 6
Регистрация: 15.10.2017
Сообщений: 159
10.01.2022, 21:30  [ТС] 9
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Ну так, еще раз, почему вы нам тут рассказываете про преобразование к char если в коде ясно видно преобразование к char *?
В самом вопросе указал char* видимо опечатка.
0
С чаем беда...
Эксперт CЭксперт С++
10008 / 5354 / 1467
Регистрация: 18.10.2014
Сообщений: 12,911
10.01.2022, 21:34 10
Цитата Сообщение от Terabiterr Посмотреть сообщение
В самом вопросе указал char* видимо опечатка.
Ну так преобразовывать к char * нужно не сам объект, а указатель на него

C++
1
in.read((char*) &object, sizeof object);
Но работать это все равно не будет. Почему - вам здесь уже объяснили.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.01.2022, 21:34
Помогаю со студенческими работами здесь

Как объект записать в файл?
Подскажите пожалуста как объект abbonent записать в файл #include &quot;stdafx.h&quot;...

Как записать объект класса в файл?
Добрый день! Подскажите пожалуйста, объект класса можно целиком записать в файл? У меня...

Записать в текстовый файл n массивов типа char, содержащих по 20 элементов
Записать в текстовый файл n массивов типа char, содержащих по 20 элементов (n вводиться с...

Записать в текстовый файл n массивов типа char, содержащих по 20 элементов
Записать в текстовый файл n массивов типа char, содержащих по 20 элементов( n вводиться с...

Записать строку (массив типа char) в файл с помощью функций fprintf и fwrite
Зраствуйте, помогите пожалуйста,мне нужно написать программу, которая будет записывать строку...

Надо записать четырехзначное число и более в символьном типе Char*/char
Как на с++ записать например 1894 в char*/char? выражение типа: char c = 1894 + '0'; char c =...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru