C ++ fstream是写十六进制而不是字符串?

时间:2015-06-29 21:22:29

标签: c++ fstream

我尝试使用目前正在运行的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。

1 个答案:

答案 0 :(得分:2)

您正在将宽字符C字符串传递给窄字符流。没有很好的自动转换,所以你只需要一个指针地址。

改为使用std::wfstream