我正在使用bloomberg api编写cpp项目代码
当我需要向Bloomberg数据源发送请求时,我必须发送带有ID的请求。例如:
Execution failed for task ':app:preDexDebug'.
\> com.android.ide.common.process.ProcessException:
org.gradle.process.internal.ExecException: Process 'command 'C:\Program
Files\Java\jdk.1.7.0_80\bin\java.exe'' finished with non-zero exit value 3
bloomberg api提供session->sendRequest(*request, CorrelationId(20));
以生成ID
此处的ID为20.来自bloomberg数据馈送的结果包含ID 20,以便我可以识别结果和请求。这意味着当我从数据提要中得到结果时,会出现这样的情况:
CorrelationId
现在我想创建一个字符串ID,而不是int ID。例如,我想生成一个像correlationId=[ valueType=INT classId=0 value=20 ]
这样的ID
如果我这样做,我没有错误,但结果中的ID变为:
CorrelationId("US543119ES")
似乎ID成为指针,它发送指针的值,而不是指针的内容。显然correlationId=[ valueType=POINTER classId=0 value=00731378 ]
是一个地址。
是否无法生成字符串ID?
如果可能,我该怎么办?
我找到了CorrelationId的文档。
有两个value=00731378
的构造函数,我不知道如何使用,我不知道其中一个是否是我需要的:
CorrelationId
答案 0 :(得分:4)
如果我们想生成字符串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".