Професионална програма
Loading...
+ Нов въпрос
LoshaPanda avatar LoshaPanda 10 Точки

Memory Managment Task {5}

Здравейте, имам проблем !

 

Условие :

https://imagebin.ca/v/5RvrC8pDY7Ix

https://imagebin.ca/v/5RvrLouMv3IJ

скелети :

https://sourceb.in/63146c3ebb

https://sourceb.in/07fcd91209

Това ми е алгоритъмът: https://srcb.in/26f0bd8cb0.

Проблемът е, че пр и id = 13 ще го вземе, като character, което е \r и след това в Serialize_Skeleton.cpp при изход ще го пропусне. Надявам се, че някой може да ми помогне !

Тагове:
0
C++ Advanced
MartinBG avatar MartinBG 2887 Точки

Доста сте усложнили решението с този ostringstream.

По-лесно ще е, ако сериализирате компаниите в един vector<byte>, чието съдържание накрая да прехвърлите в byte[].

Примерно решение.

0
LoshaPanda avatar LoshaPanda 10 Точки

Благодаря Ви, но искам да разбера защо не работи. Мисля, че е защото, когато пусна 13, тоест \r, понеже го каствам в character във буфера, за да мога да го взема, като 13, а не "1 3", след като се кастен, като \r, то влия на стрийма, но не съм сигурен дали е от това, а искам да разбера.

0
MartinBG avatar MartinBG 2887 Точки

(i|o)stringstream са предназначени за работа с текст и съответно интерпретират 13 като \r.

(i|o)fstream могат да бъдат превключени за работа в двоичен формат чрез std::ios::binary, но тази директива не е налична за (i|o)stringstream.

C++ е гъвкав език и най-верояно може да се намери начин за заобикаляне на поблема при използване на (i|o)stringstream с binary data, но това усилие не е оправдано в случая, защото използването на (i|o)stringstream не носи никакви ползи, а само усложнява решението.

0
02/07/2020 15:11:27