Bonjour,
je souhaite copier un buffer dans une structure.
Sans passer par une methode du genre:
car tous les elements de ma structure ne sont pas du meme typeCode:
1
2 structure.item1 = buffer[n];
si quelqu'un a une idée, merci
Version imprimable
Bonjour,
je souhaite copier un buffer dans une structure.
Sans passer par une methode du genre:
car tous les elements de ma structure ne sont pas du meme typeCode:
1
2 structure.item1 = buffer[n];
si quelqu'un a une idée, merci
Bonjour,
pourais tu detailler un peu plus ton probleme?
sinon, la comme ça je dirais de passer par un constructeur adéquat de ta structure.
Ben
Ma structure est du type:
donc elle occupe 3*32bits soit 12 octets.Code:
1
2
3
4
5
6
7
8
9
10
11
12 struct structure { int8 item1; int8 item2; int16 item3; int8 item4; int32 item5 int8 item6; int16 item7; };
Mon buffer est du type int8 et contient 12 elements.
Le but est d'ecrire le minimum de code, pour des raisons de place.
Je pensait qu'il etait possible de la faire a l'aide de pointeur??
Je suis un peu novice dans ce domaine :?
Merci
peu etre avec un stream
Code:
1
2
3std::istringstream iss; // dans lequel tu stoske ton buffer(, je ne me rapelle pas la syntaxe) iss >> structure.item1 >> structure.item2 >> ... ;
Si tu es certain que les octets de ton buffer correspondent aux octets de ta structure sans aucune manipulation ou conversion, alors tu peux faire une copie barbare :
Mais bon, rien que pour des raisons d'alignement, je ne suis pas certain que cela marchera. Le mieux serait tout de même de traiter individuellement chaque champ de ta structure.Code:
1
2
3
4
5 structure = *reinterpret_cast<structure_type*>(buffer); // Ou memcpy(&structure, buffer, sizeof(structure));
Merci,
Pour info je n'ai pas acces au stream, donc en effet je cherchais une version barbare.
Loulou24,
Je suis sur que mes données sont alignées dans mon buffer sur les données dans ma structure.
Je vais essayer.
Merci, cela fonctionne