提问者:小点点

C++在Windows环境下将部分*char缓冲区写入临时文件


我对C++和Win32还是个新手。我需要完成一个非常简单的任务:

>

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

    另外,我似乎也搞不清楚对二进制文件使用char是否可以,但问题是,ifstream默认情况下将以char的形式读取数据。

    还有一个快速的附带问题:我是否总是必须删除任何指针,一旦我完成了它们。即。在我上面的例子中,我是否必须调用删除缓冲区,一旦我完成了它?

    多谢了。


  • 共1个答案

    匿名用户

    我有一个缓冲区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[]

    相关问题


    MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(c++|windows|环境|char|缓冲区|写入|临时文件)' ORDER BY qid DESC LIMIT 20
    MySQL Error : Got error 'repetition-operator operand invalid' from regexp
    MySQL Errno : 1139
    Message : Got error 'repetition-operator operand invalid' from regexp
    Need Help?