使用C++读取Python字典

0 投票
3 回答
3135 浏览
提问于 2025-04-16 05:43

我有一个存储在文件里的Python字典,现在我想在C++程序中使用它。请问有什么好的方法可以做到这一点?

谢谢

3 个回答

0

我猜你在用的Python字典里都是简单的数据类型,没有复杂的对象(比如字符串、数字、列表和嵌套字典),因为你想在C++中使用它。

我建议你使用json库(http://docs.python.org/library/json.html)来把它转换成可以使用的格式,然后再用C++中的类似工具把它转成C++对象。

2

有很多Python和C++的绑定库(包括Boost里的那个),但我建议遵循一个简单的原则:不是用Python和C++的绑定,而是“保持简单,傻瓜”。

可以用一个Python程序来访问字典。:-)

你可以通过运行Python程序来从C++访问它们,或者可以做一些更复杂的事情,比如通过套接字在Python和C++之间进行通信,或者使用Windows的“邮件插槽”,甚至可以用一些更完整的进程间通信方法。

祝好,希望对你有帮助。

3

怎么做这个取决于你序列化的Python数据类型。基本上,Python打印出来的东西像这样...

{1: 'one', 2: 'two'}

...所以你需要一些代码来解析这些数据。最简单的情况是从一种简单类型到另一种简单类型的映射,比如从整数到整数:

int key, value;
char c;

if (s >> c && c == '{')
    while (s >> key)
    {
        if (s >> c && c == ':' && s >> value)
            my_map[key] = value;
        if (s >> c && c != ',')
            break;
    }

你可以在这个基础上继续扩展,添加解析错误信息,支持嵌套容器、字符串类型等等。

你可能能找到一些现成的实现——我不太确定。不过,这给你一个大致的概念,了解它们内部是怎么工作的。

撰写回答