Есть ли в C++ двоичные потоки памяти

Клен (Swing)

должен был работать много с Кленом на прошлой неделе. Это - такой хороший и мощный инструмент, я сначала не мог полагать, что это было разработано с Swing и Java :)

53
задан FireAphis 13 October 2009 в 03:19
поделиться

2 ответа

Well, just use characters, not integers.

s << char(1) << char(2) << char(3);
4
ответ дан 7 November 2019 в 08:52
поделиться

Для чтения и записи двоичных данных в потоки, включая строковые потоки, используйте функции-члены read () и write (). Итак,

unsigned char a(1), b(2), c(3), d(4);
std::stringstream s;
s.write(reinterpret_cast<const char*>(&a), sizeof(unsigned char));
s.write(reinterpret_cast<const char*>(&b), sizeof(unsigned char));
s.write(reinterpret_cast<const char*>(&c), sizeof(unsigned char));
s.write(reinterpret_cast<const char*>(&d), sizeof(unsigned char));

s.read(reinterpret_cast<char*>(&v), sizeof(unsigned int)); 
std::cout << std::hex << v << "\n";

Это дает 0x4030201 в моей системе.

Изменить: Чтобы сделать эту работу прозрачной с операторами вставки и извлечения (<< и >>), лучше всего создать производный streambuf, который делает правильные вещи, и передать его любым потокам, которые вы хотите использовать.

35
ответ дан 7 November 2019 в 08:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: