我正在使用bloomberg api 编写一个cpp 项目。
当我需要向彭博数据馈送发送请求时,我必须发送带有 ID 的请求。例如:

session->sendRequest(*request, CorrelationId(20));
CorrelationId 由bloomberg api 提供,用于生成ID。
这里的 ID 是 20。来自 Bloomberg 数据提要的结果包含 ID 20,以便我可以识别结果和请求。这意味着当我从数据馈送中获得结果时,会有如下内容:correlationId=[ valueType=INT classId=0 value=20 ]
现在我想创建一个字符串 ID,而不是 int ID。例如,我想生成一个类似 CorrelationId("US543119ES") 的 ID。
如果我这样做,我不会出错,但结果中的 ID 变为:correlationId=[ valueType=POINTER classId=0 value=00731378 ]
似乎 ID 变成了一个指针,它发送指针的值,而不是指针的内容。显然 value=00731378 是一个地址。

生成字符串ID是不可能的吗?
如果可能,我应该怎么做?
我找到了 CorrelationId 的文档。
CorrelationId 的构造函数有两个我不知道怎么用,不知道其中一个是不是我需要的:
CorrelationId (void *value, int classId=0);
template<typename TYPE >
CorrelationId (const TYPE &smartPtr, void *pointerValue, int classId=0);

最佳答案

如果我们想生成一个字符串ID,我们可以只发送字符串的地址。然后,bloomberg 数据馈送将向我们发送回地址,其类型为 void * 。所以我们只需要把它转换成 char * 。下面是一个例子:

// sending
const char * id = "abc";
session->sendRequest(*request, CorrelationId(const_cast<char *>(id))); // it can't take "const char *"

// handling response
cout << (char *)message.correlationId().asPointer(); // it will show "abc".

关于时间:2019-05-16 标签:c++bloombergapicorrelationId,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32422429/

10-11 20:00