繁体   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