2012-04-28 38 views
0

我对C++和win32很新颖。我需要完成一个非常简单的任务:C++将* char缓冲区的一部分写入Windows上的临时文件

  1. 我有一个缓冲区char *缓冲区,其长度我知道,它包含一些二进制数据。你能否提供一个示例代码,它将在Windows(win32 API)上将该缓冲区的内容(给定起始索引和长度)写入临时文件(即使没有管理员权限,该位置也必须是可写的)?所以,为了达到这个目的,我必须知道如何在我可以编写的窗口上获得一个有效的临时文件名,以及我应该如何将这些文件中的某些二进制数据从我的char *缓冲区的给定部分写入。

  2. 另外我似乎无法弄清楚是否可以使用字符二进制文件,但问题是,ifstream默认会读取数据为字符。

  3. 而只是一个快速的一面的问题:我总是不得不删除任何指针,一旦我完成了他们。即在我上面的例子中,一旦我完成它,我将不得不调用delete buffer吗?

谢谢。

+0

你有什么试过?你有什么具体问题? StackOverflow不是教程网站。(虽然#2,#3是很容易回答:是的是) – Corbin 2012-04-28 10:28:01

+0

你问不同的东西,我想,在你解决Windows API的第一个问题,第二你谈ifstream的问题。你需要什么API? – vissi2 2012-04-28 10:31:01

回答

0

我有一个缓冲区char *缓冲区,其长度我知道,它包含一些二进制数据。您能否提供一个示例代码,将 缓冲区的内容(给定起始索引和长度)写入 临时文件(即使没有管理员权限,位置也必须是可写的) (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/

而只是一个简单的问题:我总是不得不删除任何指针,一旦我完成它们。即在我上面的例子中,一旦我完成了它,我的 必须调用delete buffer吗?

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

char * buffer = new char[MaxBuffer]; 

// more things ... 

delete[] buffer; 

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