gpt4 book ai didi

c++ - 在 C++ BLPAPI 中有一种方法可以避免使用 hasElement 或捕获错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:24:48 25 4
gpt4 key购买 nike

通常我会做以下事情:

if (msg.hasElement(BID_SIZE))
{
bid_sz=msg.getElementAsInt32(BID_SIZE);
}

如果我不首先使用 hasElement 检查 - 那么不存在的字段将抛出错误

最佳答案

不使用 getElementAsInt32,而是使用 getValueAs:

Element field;
int err=msg.asElement().getElement(&field, BID_SIZE);
if (!err)
{
int valerr=field.getValueAs(&bid_sz); // will call getValueAs for the type of bid
}

这将避免在消息中查找 BID_SIZE 两次,并且在找不到字段时不会抛出。

或者,您可以遍历所有字段并检查它是哪个字段:

Element asElem=msg.asElement();
size_t num=asElem.numElements();
for (size_t i=0; i < num; ++i)
{
Element field=asElem.getElement(i);
Name field_name=field.name();
if (field_name == BID_SIZE)
{
bid_sz=field.getValueAsInt32();
}
// check other fields
// put more likely fields at the top
}

关于c++ - 在 C++ BLPAPI 中有一种方法可以避免使用 hasElement 或捕获错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20962874/

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