我正在尝试为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/

10-17 02:02