C ++将* char缓冲区的一部分写入Windows上的临时文件

时间:2012-04-28 10:25:42

标签: c++ winapi io

我是C ++和win32的新手。我需要完成一项非常简单的任务:

  1. 我有一个缓冲区char *缓冲区,其长度我知道并且包含一些二进制数据。在Windows(win32 api)上,您能否提供一个示例代码,该代码将该缓冲区的内容(给定起始索引和长度)写入临时文件(位置必须可写,即使没有管理员权限)?因此,为了实现这一点,我必须知道如何在我可以编写的窗口上获取有效的临时文件名,以及我应该如何从我的char *缓冲区的给定部分向该文件写入一些二进制数据。

  2. 此外,我似乎无法弄清楚是否可以将char用于二进制文件,但问题是默认情况下ifstream会将数据读取为char。

  3. 还有一个简单的问题:一旦完成它,我总是要删除任何指针。即在我上面的例子中,一旦完成它,我是否必须调用delete buffer?

  4. 感谢。

1 个答案:

答案 0 :(得分:0)

  

我有一个缓冲区char *缓冲区,其长度我知道并且包含一些二进制数据。能否请您提供一份可写的示例代码   该缓冲区的内容(给定起始索引和长度)为a   临时文件(即使没有管理员权限,位置也必须是可写的)   在Windows上(win32 api)?

google中的快速搜索会返回制造商提供的有关临时文件的文档。

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

请记住,一旦您以这种方式使用临时文件,您的代码将自动无法移植(如果这对您很重要)。

一旦有了临时文件的名称和目录,您要求的代码就是微不足道的。再次,谷歌快速搜索返回:

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[]