当前位置: 首页 > 知识库问答 >
问题:

C++在Windows环境下将部分*char缓冲区写入临时文件

淳于烈
2023-03-14

我对C++和Win32还是个新手。我需要完成一个非常简单的任务:

>

  • 我有一个buffer char*buffer它的长度我知道,它保存了一些二进制数据。请提供一个示例代码,将该缓冲区的内容(给定起始索引和长度)写入一个临时文件(即使没有管理权限,位置也必须是可写的)在Windows(win32 api)上?因此,要实现这一点,我必须知道如何在windows上获得一个有效的临时文件名,我可以写入该文件,以及如何从char*缓冲区的给定部分将一些二进制数据写入该文件

    另外,我似乎也搞不清楚对二进制文件使用char是否可以,但问题是,ifstream默认情况下将以char的形式读取数据。

    还有一个快速的附带问题:我是否总是必须删除任何指针,一旦我完成了它们。即。在我上面的例子中,我是否必须调用删除缓冲区,一旦我完成了它?

    多谢了。

  • 共有1个答案

    咸弘雅
    2023-03-14

    我有一个缓冲区char*buffer,它的长度我知道,它保存了一些二进制数据。请提供一个示例代码,将该缓冲区的内容(给定起始索引和长度)写入一个临时文件(即使没有管理权限,位置也必须是可写的)在Windows(win32 api)上?

    在google中快速搜索就会返回来自制造商的关于临时文件的文档。

    http://msdn.microsoft.com/en-us/library/windows/desktop/aa363875(v=vs.85).aspx

    请记住,一旦您以这种方式使用临时文件,您的代码就自动不可移植(以防这对您很重要)。

    一旦您有了临时文件的名称和目录,您所要求的代码就很简单了。再次在google中快速搜索返回:

    http://www.cplusplus.com/forum/general/21018/

    如果您更喜欢坚持C(旧)样式而不是使用IOStream,那么您也可以使用:

    http://www.cplusplus.com/reference/clibrary/cstdio/fwrite/

    还有一个快速的附带问题:我是否总是必须删除任何指针,一旦我完成了它们。即。在我上面的例子中,我是否必须调用删除缓冲区,一旦我完成了它?

    您必须始终删除分配的内存,由指针(这是其名称的起源)指向,在使用它之后。

    char * buffer = new char[MaxBuffer];
    
    // more things ...
    
    delete[] buffer;
    

    在删除向量而不是单个对象时,请记住使用delete[]

     类似资料:
    • 我无法重写从二进制缓冲区获取的文件,我已与原始文件进行了检查,所有字节都相同。 这是从NodeJS创建的文件: 这是最初的一个: 你可以比较这两个文件,每个字节都是一样的,我猜NodeJS的编码不是正确的。 这是一段代码 你可以试着在你的节点上运行它,看看结果是错误的。 我能做些什么来修复它?

    • 我正试图将大量数据写入我的SSD(固态驱动器)。我指的是80GB。 我浏览了网页寻找解决方案,但我想出的最好的办法是: 使用Visual Studio 2010编译并进行全面优化并在Windows7下运行,该程序的最大容量约为20MB/s。真正让我困扰的是,Windows可以以150MB/s到200MB/s之间的速度将文件从其他SSD复制到此SSD。所以至少快了7倍。这就是为什么我认为我应该能够走

    • 环型缓冲区是一种用于表示一个固定尺寸、头尾相连的缓冲区的数据结构,适合缓存数据流。 构造环型缓冲区 var ringBuffer = new RingBufferStream(); 函数原型 RingBufferStream(int capacity = 8192, bool exposable = true); 参数 描述 capacity 环状缓冲区的最大容量,为2的次方。如:传入12,则

    • 环形缓冲区接口 结构体 struct   rt_ringbuffer   环形缓冲区控制块 更多...   枚举 函数 void  rt_ringbuffer_init (struct rt_ringbuffer *rb, rt_uint8_t *pool, rt_int16_t size)   初始化环形缓冲区   void  rt_ringbuffer_reset (struct rt_rin

    • 本文向大家介绍Windows下Python的Django框架环境部署及应用编写入门,包括了Windows下Python的Django框架环境部署及应用编写入门的使用技巧和注意事项,需要的朋友参考一下 环境搭建 1、下载所需的软件包: (1)python安装包 (2)django安装包 以下2个包其实是安装python包管理工具,在后面安装django文档包模块时会用到,下载网站是pypi (1)s

    • 不使用ByteBuffer:第一种方法 使用byte Buffer:还有一点是数据成员的大小将始终保持固定,即CharacterData=1byte、ShortData=1byte、IntegerData=2byte和StringData=3byte。所以这个类的总大小总是7byte 第二种方法 PS 如果我使用序列化,它还会写入单词“characterdata”、“shortdata”、“int