我有一个libevent struct evbuffer
,在程序中的某个位置我向它写入,稍后我可能需要返回到我写入的内容,并将一个字节从“1”更改为“0”。
为了做到这一点,我希望有一个指向该字节的指针。
获得该字节的最佳方法是什么(要么在写入后立即获得其地址,要么知道偏移量),以及如何更新它,以便我可以确保这是实际的字节,而不是它为我获取时所做的libevent的副本?
Fiddling Bits请求的代码示例:
struct evbuffer* buf = evbuffer_new();
evbuffer_add(buf, "abc1def", 7);
// What I'd like to achieve:
char *byte = evbuffer_get_by_offset(buf, 3, 1); // Get one character, offset of 3
*byte = '0'; // buf now holds "abc0def"
1条答案
按热度按时间krugob8w1#
先不考虑是否应该这样做,下面是使用
evbuffer_iovec
和evbuffer_peek
实现这一点的方法: