在我的C ++ QuickFix应用程序中,我正在记录我进入文件的所有MarketDataIncrementalRefresh消息。这是使用以下代码完成的:
void Application::onMessage(const FIX44::MarketDataIncrementalRefresh& message, const FIX::SessionID&)
{
ofstream myfile("tapedol.txt", std::ios::app);
myfile << message << endl << endl;
}
这部分工作正常。当我稍后尝试加载消息时,会出现此问题。
FIX::Message msg
ifstream myfile("tapedol.txt");
getline(myfile,aux);
msg = aux;
msg.getField(55);
程序每次执行最后一行时都会崩溃。我怀疑问题出在了msg的分配上,但我不确定。如果是,那么做这种作业的正确方法是什么?如果没有,我如何处理tapedol.txt中的数据,以便为文件中的每个字符串生成一个类型为MarketDataIncremental refresh的消息?
答案 0 :(得分:0)
你的问题不够完整,无法提供完整的答案,但我确实看到了一个红旗:
msg.getField(55);
符号字段不是MarketDataIncrementalRefresh的顶级字段(它在NoMDEntries重复组内),因此该行将失败。我认为它会引发FieldNotFound异常。
我的C ++很生疏,但你应该能够捕获一个异常或者应该告诉你究竟是什么行错误的东西。除此之外,您需要打开一个调试器。只是说&#34;它崩溃了#34;意味着你过早地放弃了。