如何将QuickFIX库中的SWIG对象转换为Python可读字符串?
解决QuickFIX Python(SWIG封装)中获取字符串输出的问题
1. 遍历SWIG封装的std::set对象
SWIG对C++ std::set的封装通常支持迭代,你可以直接遍历对象,将每个FIX::SessionID转换为字符串:
# 假设获取到的SWIG对象为session_set session_str_list = [] for session_id in session_set: # 直接用str()转换,或调用SessionID的toString()方法 session_str_list.append(str(session_id)) # session_str_list即为所有SessionID的字符串集合
2. 调用QuickFIX原生方法转换
如果直接str()转换无效,试试调用FIX::SessionID自带的toString()方法(QuickFIX标准API):
session_str = session_id.toString()
3. Django模块中的处理方式
- 视图层处理:在视图中完成转换后,将结果传入模板上下文:
# Django视图示例 def session_list_view(request): # 调用QuickFIX函数获取SWIG对象 session_set = your_quickfix_api_call() # 转换为字符串列表 session_strings = [str(sid) for sid in session_set] return render(request, 'session_list.html', {'sessions': session_strings}) - 模板层渲染:在模板中直接循环展示结果:
<div class="session-list"> {% for session in sessions %} <p>{{ session }}</p> {% endfor %} </div>
4. 迭代失效的兼容处理
如果SWIG封装的std::set不支持直接迭代,可尝试调用其暴露的C++风格方法:
# 利用size()获取集合长度,at()访问指定位置元素 session_count = session_set.size() session_str_list = [] for i in range(session_count): session_id = session_set.at(i) session_str_list.append(str(session_id))
内容的提问来源于stack exchange,提问作者Neha
相关产品推荐
相关产品推荐

