gpt4 book ai didi

c++ - Poco::格式错误

转载 作者:行者123 更新时间:2023-11-30 02:45:58 25 4
gpt4 key购买 nike

我正在使用 POCO (v 1.4.6p4) 日志框架,但我在格式化字符串方面遇到了一些问题:

int MyClass::MyMethod(unsigned short number) {  
Logger::get("MyLog").information(Poco::format("Log a number [%u]", number));
}

这里我得到:

Log a number [ERRFMT]

并抛出 Poco::BadCastException。
深入研究源代码,我注意到异常被抛入了 Any 类:

template <typename ValueType>
ValueType AnyCast(const Any& operand)
/// AnyCast operator used to extract a copy of the ValueType from an const Any&.
///
/// Example Usage:
/// MyType tmp = AnyCast<MyType>(anAny).
/// Will throw a BadCastException if the cast fails.
/// Dont use an AnyCast in combination with references, i.e. MyType& tmp = ... or const MyType& = ...
/// Some compilers will accept this code although a copy is returned. Use the RefAnyCast in
/// these cases.
{
ValueType* result = AnyCast<ValueType>(const_cast<Any*>(&operand));
if (!result) throw BadCastException("Failed to convert between const Any types");
return *result;
}

谁能告诉我哪里错了?

最佳答案

您必须添加 modifier (h) 对于无符号短:

Poco::format("Log a number [%hu]", number)

这种烦恼来自 Any 在从中提取值时的严格性——你必须询问确切的类型,否则你得到的只是一个异常或空指针。

关于c++ - Poco::格式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24011087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com