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