我对C++和Win32还是个新手。我需要完成一个非常简单的任务:
>
我有一个buffer char*buffer它的长度我知道,它保存了一些二进制数据。请提供一个示例代码,将该缓冲区的内容(给定起始索引和长度)写入一个临时文件(即使没有管理权限,位置也必须是可写的)在Windows(win32 api)上?因此,要实现这一点,我必须知道如何在windows上获得一个有效的临时文件名,我可以写入该文件,以及如何从char*缓冲区的给定部分将一些二进制数据写入该文件。
另外,我似乎也搞不清楚对二进制文件使用char是否可以,但问题是,ifstream默认情况下将以char的形式读取数据。
还有一个快速的附带问题:我是否总是必须删除任何指针,一旦我完成了它们。即。在我上面的例子中,我是否必须调用删除缓冲区,一旦我完成了它?
多谢了。
我有一个缓冲区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[]
。