2013-12-22 67 views
1
BOOL WINAPI WriteFile(
    _In_   HANDLE hFile, 
    _In_   LPCVOID lpBuffer, 
    _In_   DWORD nNumberOfBytesToWrite, 
    _Out_opt_ LPDWORD lpNumberOfBytesWritten, 
    _Inout_opt_ LPOVERLAPPED lpOverlapped 
); 

WriteFile需要一個const void *。如何將std :: string轉換爲const void *,以便將字符串的內容寫入磁盤?Windows API - 使用WriteFile編寫std :: string的正確方法是什麼?

+0

如果您關心從文件中讀取信息,最好將長度存儲在內容前面。它使得讀取數據變得更容易(你已經知道了長度)並且不會因爲嵌入NUL字符的字符串而中斷。 – IInspectable

回答

5

您可以使用c_str()從您std::string得到char *,然後你可能只需要通過直接作爲第二個參數來WriteFile。如果不是,則只需將指針投射到LPCVOID

更多有關c_str(),請參閱: std::string to char*

+3

你不需要施放它。 – chris

0

正如你已經知道,LPCVOID僅僅是CONST void*一個typedef。因此,您可以將const char*傳遞給該函數。 std::string提供了一個稱爲c_str()的功能。不需要強制轉換,因爲它們都是const限定的。

相關問題