我正在尝试为fwprintf
写一个包装。我正在使用wstringstream
捕获格式化的va_list
,然后使用实际的fwprintf
打印到文件。由于某种原因,我得到了乱码,而不是一个不错的unicode字符串。
有人可以帮忙吗?
void WriteToLog(wchar_t *message, ...)
{
FILE * pFile;
if (_wfopen_s (&pFile, SZ_LOG_FILE_PATH,L"a") != 0)
{
display_error_message(-1, L"Could not open log file.", IsSilent, MB_ICONSTOP);
return;
}
std::wstringstream buffer;
va_list args;
va_start(args, message);
buffer << vwprintf(message, args);
va_end(args);
fwprintf(pFile, buffer.str().c_str());
fclose(pFile);
}
最佳答案
您将整数输出到流中,而在流包含整数(十进制规范)之后,您感到困惑。
考虑一下,您的代码
buffer << vwprintf(message, args);
相当于
int const x = vwprintf(message, args);
buffer << x;
您也许现在看到如何获得实际结果了吗?
干杯,……
关于c++ - 为fwprintf写一个包装器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6983600/