Bonjour,
J'ai besoin de passer d'une structure a un std::vector<char> et inversement.
J'aimerais savoir si vous avez un moyen plus efficasse que le mien.
struct -> vector
vector -> struct
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 std::vector<char> & MaClass::pack(maStruct * packet) { std::string myString; std::stringstream myStream; std::vector<char> *to_ret = new std::vector<char>; if (packet) { myStream << packet->infoA; myStream << packet->infoB; myString = myStream.str(); for (unsigned int i = 0 ; i < myString.size() ; ++i) (*to_ret)[i] = myString[i]; } return *to_ret; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 maStruct * MaClass::unpack(std::vector<char> & buffer) { std::string myString; std::stringstream myStream; t_packet *to_ret = new t_packet; if (!buffer.empty()) { myString.resize(buffer.size()); for (unsigned int i = 0 ; i < buffer.size() ; ++i) myString[i] = buffer[i]; myStream << myString.erase(0 , sizeof(to_ret->infoA)); myStream >> to_ret->infoA; myStream.clear(); myStream << myString.erase(0 , sizeof(to_ret->infoB)); myStream >> to_ret->infoB; myStream.clear(); return to_ret; } else delete to_ret; return NULL; }
Partager