是否有(跨平台)方法从C++ std :: fstream获取C FILE*句柄?
我问的原因是因为我的C++库接受fstreams并且在一个特定的函数中我想使用接受FILE*的C库.
我的硬盘容量为120 GB,其中100 GB由一个巨大的文件占用.所以20 GB仍然是免费的.
我的问题是,我们如何将这个巨大的文件拆分成较小的文件,比如每个1 GB?我看到如果我有大约100 GB的可用空间,可能只需要简单的算法就可以了.但是只有20 GB的可用空间,我们可以写入多达20个1GB的文件.我不知道如何从大文件中删除内容.
有解决方案吗
看起来我要将文件截断1 GB,一旦我写完一个文件,但归结为这个问题:
是否可以截断文件的一部分?究竟怎么样?
我想看一个在C或C++(最好是标准C和C++)中工作的算法(或算法大纲),所以我可能知道较低级别的细节.我不是在寻找可以完成这项工作的神奇功能,脚本或命令.
如何从标准流中获取自己的流?
在C#语言中,有一个Stream类,但C++的流太复杂了.
我想要这样的东西:
class my_stream : public std::stream
{
// How to derive?
};
void using_a_stream(std::stream* s)
{
*s << "Hello world";
}
void main()
{
std::stream s1;
std::fstream s2("C:\\test.txt");
my_stream s3;
using_a_stream(&s1);
using_a_stream(&s2);
using_a_stream(&s3);
}
Run Code Online (Sandbox Code Playgroud)
注意:代码只是一个示例,可能是无效的C++程序.谢谢.