【发布时间】:2011-11-14 00:09:00
【问题描述】:
我正在使用 C 并且需要一个流缓冲区机制,我可以写入任意字节两个并从中读取字节。我更喜欢独立于平台的东西(或者至少可以在 osx 和 linux 上运行)。有没有人知道我可以加入的任何宽松的轻量级库或代码?
我在 libevent 中使用了缓冲区,我最终可能会走这条路,但是当我不执行任何基于事件的 io 时,将 libevent 作为依赖项似乎有点过头了。
【问题讨论】:
我正在使用 C 并且需要一个流缓冲区机制,我可以写入任意字节两个并从中读取字节。我更喜欢独立于平台的东西(或者至少可以在 osx 和 linux 上运行)。有没有人知道我可以加入的任何宽松的轻量级库或代码?
我在 libevent 中使用了缓冲区,我最终可能会走这条路,但是当我不执行任何基于事件的 io 时,将 libevent 作为依赖项似乎有点过头了。
【问题讨论】:
如果您不介意依赖 C++ 和可能的一些 STL,您可以使用 std::stringstream。围绕它编写一个精简的 C 包装器应该不会太难。
【讨论】:
s/STL/the C++ Standard Library。 STL 没有 std 命名空间。
std::basic_string<>/etc 有多少通过模板实例化增加了您的代码大小)。但是std::vector 一直为我工作......
setbuf(3)(及其别名)是您正在搜索的“机制”吗?
请考虑以下示例:
#include <stdio.h>
int main()
{
char buf[256];
setbuffer(stderr, buf, 256);
fprintf(stderr, "Error: no more oxygen.\n");
buf[1] = 'R';
buf[2] = 'R';
buf[3] = 'O';
buf[4] = 'R';
fflush(stderr);
}
【讨论】: