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
。
我正在尝试使用 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
。