Re: Jak to v C++ napsat líp?

d.petr d.petr na post.cz
Čtvrtek Srpen 31 09:48:56 CEST 2023


Z dalšího mailu:
> To pole je uint16_t proto, aby se s ním rozumně pracovalo, ale pak se přenáší na server jako sekvence byte. No a já do něj také potřebuji uložit text. Celý přenos je tak jediný příkaz
>
> client.write((byte*)A,počet_znaků);
>
> to pole je pochopitelně větší, než 2 znaky.

Nevím zda to jde v C++, ale v normálním C bych asi použil
memcpy (A, "ABCD", 4);
nebo strncpy ((char*)A, "ABCD", 4);

Kdyby to nebylo od začátku "A", tak samozřejmě
memcpy (A+něco, "ABCD", 4);
To "něco" je počet velikostí int (tzn. index v A).
Kdyby se mělo doplňovat do pole na pozici necelého intu, tak
memcpy ((char*)A+něco2, "ABCD", 4); tady už něco znamená skutečnou pozici bajtu.

Snad je to dobře.
P.


Martin Záruba napsal(a) dne 31. 08. 23 v 7:05:
> Mám pole
> 
> int A[2];
> 
> potřebuji do něj ale vložit  čtyři znaky ABCD. Vymyslel jsem
> 
> A[0] = ('A' << 8) | 'B';
> A[1] = ('C' << 8) | 'D';
> 
> nejde to nějak líp? Toto funguje, ale je to docela nesrozumitelné.
> 



Další informace o konferenci Hw-list