c++ - 来自 libapt-pkg 的损坏的字符串
问题描述
我正在尝试为 Ubuntu 制作一个类似于 Synaptic 的 GUI 包管理器,它使用 libapt,但遇到了一些与从 pkgCache 获取信息有关的奇怪错误。特别是在使用 pkgIterator 并尝试访问 FullName() 和 Name() 属性时,但 Section() 之类的其他属性很好(您可以在此处查看文档)。
看看 Synaptic 的做法,它非常简单,我尝试 1:1 复制它,但没有成功。
const char *name() {
const char *n = package->Name();
if (n == NULL)
return "";
return n;
}
这通常会返回一些看起来像是错过了空终止的垃圾字符串。有趣的是,来自存储库的同一组中的包的所有字符串都将具有相同的垃圾文本,而本地安装的包将具有 NULL 指针,因此将返回一个空字符串。
有任何想法吗?我相信我正确打开了 pkgCache 并且迭代器不为 NULL。调试 libapt 时也没有很多地方可以在线查看,因此任何参考资料都会有所帮助!
解决方案
推荐阅读
- mysql - 从 STATION 表中选择以元音开头和结尾的城市名称
- javascript - Electron js webContents.print 选项不起作用(总是在 A4 页面上打印)
- laravel - 按不适用于 Laravel Dusk 中的选择器
- arrays - Powershell - 如何检索对象 [] 数据
- c# - RabbitMQ.Client.Exceptions.BrokerUnreachableException:'指定的端点都不可到达'
- javascript - 使用 css 和 javascript 垂直滚动文本
- sql - 在dataGrip中激活外键约束错误
- java - Java游戏 - 2个字符之间的碰撞问题
- python - Pandas 将列表拆分为多行
- pascal - 现在在 Pascal 中的函数