来自char缓冲区的fread

时间:2017-11-10 17:58:57

标签: c++

我的文件中有一些内容是由'w'模式的fwrite写的。

我知道我可以再次使用fread读回来,但我想知道是否有办法将整个文件读入std :: string / char缓冲区,然后从中传播。

我承认这是一个奇怪的要求,文件实际上是远程存储的,我不想将文件提取到磁盘,然后由于延迟问题而从它上面传播。

2 个答案:

答案 0 :(得分:0)

不支持读取字符串然后从中支持fread,因此这样做需要对标准库代码进行一些非可移植的黑客攻击。

将其读入一个字符串然后从中支持istream::read是完全支持的,所以这很简单。就个人而言,我可能会使用iostream进行整个操作。除非远程文件非常庞大,否则我可能会这样做:

// Open remote for reading:
std::ifstream remote_file("filename");

std::stringstream buffer;

// get the data from the remote file into the stringstream:
buffer << remote_file.rdbuf();

// read some data from the stringstream:
char input_buffer[256];
buffer.read(input_buffer, sizeof(input_buffer));

答案 1 :(得分:0)

如何使用system()scp功能获取文件?

#include <iostream>
#include <cstdlib>
#include <cstring>

int main()
{
    char command[90];

    strcpy(command, "scp remoteUser@remoteServer:remote/path/to/file.txt local/path/to/newFile.txt");
    system(command);

    // Then read as you normally would using fread

    return 0;
}

以下是使用system()函数的几个示例。

这是ssh命令的人。