我是C ++和win32的新手。我需要完成一项非常简单的任务:
我有一个缓冲区char *缓冲区,其长度我知道并且包含一些二进制数据。在Windows(win32 api)上,您能否提供一个示例代码,该代码将该缓冲区的内容(给定起始索引和长度)写入临时文件(位置必须可写,即使没有管理员权限)?因此,为了实现这一点,我必须知道如何在我可以编写的窗口上获取有效的临时文件名,以及我应该如何从我的char *缓冲区的给定部分向该文件写入一些二进制数据。
此外,我似乎无法弄清楚是否可以将char用于二进制文件,但问题是默认情况下ifstream会将数据读取为char。
还有一个简单的问题:一旦完成它,我总是要删除任何指针。即在我上面的例子中,一旦完成它,我是否必须调用delete buffer?
感谢。
答案 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[]
。