C++ - 使用相同的函数从文件或内存缓冲区中读取

ztf*_*ter 3 c c++

是否有一个标准的C/C++函数,它接受文件句柄/指针或指向内存缓冲区的指针,并从文件/缓冲区中读取数据?

我有一个函数从文件中提取数据,对所述数据执行操作,并通过套接字发送出去.我还有一个函数,它以char缓冲区的形式获取数据,对该数据执行完全相同的操作,并通过套接字发送它.这个问题并不难.我只是觉得如果有像这样的功能会很方便

read(void *dest, void *src, int src_type, size_t amount)
Run Code Online (Sandbox Code Playgroud)

das*_*ght 8

在C++中,您可以使用std::istream带有std::ifstream实现的文件或带有实现的内存缓冲区作为抽象std::istringstream.

这种方法的优点在于您的函数不需要知道实现类型,因为通过引用接收参数就足够了:

void readData(std::istream& in_data) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

然后调用者将构造一个适当的实现,并将其传递给readData.