簡體   English   中英

C ++ fstream正在編寫十六進制而不是字符串?

[英]C++ fstream is writing hex instead of string?

我正在嘗試使用URLDownloadToFile()來下載文件,該文件目前可以正常工作,但是我在使用回調函數並將回調輸出wszStatusText寫入文件時遇到了麻煩。

這是導致問題的函數:

HRESULT DownloadStatus::OnProgress(ULONG ulProgress, ULONG ulProgressMax, ULONG ulStatusCode, LPCWSTR wszStatusText)
{
    fstream myfile;
    myfile.open("file.txt", ios::app);

    // this prints hex
    myfile << " StatusText: " << wszStatusText;
    myfile.close();

    // this prints the string properly
    MessageBox(NULL, wszStatusText, L"test", MB_OK);

    return S_OK;
}

問題是MessageBox()正確顯示了數據...

更新

得到異常錯誤后(使用wfstream ),我發現它之所以給我,是因為wszStatusText的第一個值為NULL。

您正在將寬字符C字符串傳遞到窄字符流中。 那里沒有很好的自動轉換功能,因此您只能獲得一個指針地址。

請改用std::wfstream

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM