我的文件中有一些内容是由'w'模式的fwrite写的。
我知道我可以再次使用fread读回来,但我想知道是否有办法将整个文件读入std :: string / char缓冲区,然后从中传播。
我承认这是一个奇怪的要求,文件实际上是远程存储的,我不想将文件提取到磁盘,然后由于延迟问题而从它上面传播。
答案 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命令的人。