使用 std::wstring 或 wchar_t 进行 Poco 日志记录

Poco Logging with std::wstring or wchar_t

是否可以使用 Poco 记录器记录 std::wstring

就像这个简短的例子:

int main(int argc, char** argv)
{
    Logger& logger = Logger::get("Testlogger");
    std::wstring WStringMessage = L"Message as a WString";
    std::string StringMessage = "Message as a String";
    //logger.information(WStringMessage); //Did not compile because it only takes a String
    logger.information(StringMessage);


    system("PAUSE");
    return 0;
}

是否有可能的解决方案,或者我是否必须将每个 std::wstring 转换为 std::string

std::wstring 在其他 Poco 库(如 XML 中)的支持如何?

Poco 接口仅为 utf-8,因此您必须在将字符串发送到记录器之前将其转换为 utf-8:

std::string msg;
Poco::UnicodeConverter::convert(WStringMessage, msg);
logger.information(msg);

对于XML,参见here,但基本上推荐是一样的——使用utf-8。