0

我对 C++ 和 win32 还是很陌生。我需要完成一个非常简单的任务:

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

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

  3. 还有一个简单的问题:一旦我完成了它们,我是否总是必须删除它们。即在我上面的示例中,我是否必须在完成后调用删除缓冲区?

谢谢。

4

1 回答 1

0

我有一个缓冲区 char* 缓冲区,我知道它的长度并保存一些二进制数据。您能否提供一个示例代码,将缓冲区的内容(给定起始索引和长度)写入 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[]在删除向量而不是单个对象时使用。

于 2012-04-28T10:37:04.487 回答