【问题标题】:How to update the printer for c++ vector so that it can print each element如何更新 C++ 向量的打印机,以便它可以打印每个元素
【发布时间】:2016-05-31 19:22:03
【问题描述】:

我开始研究 gdb python 扩展,需要一些帮助。

这是一个例子:

#include <vector>

int main() {
  using namespace std;

  vector<int> v;
  v.push_back(1);
  v.push_back(2);
  v.push_back(3);

  return 0;
}

这是我在 gdb 中使用的命令:

(gdb) set print pretty
(gdb) n
7         v.push_back(1);
(gdb)
8         v.push_back(2);
(gdb)
9         v.push_back(3);
(gdb)
11        return 0;
(gdb) p v
$1 = std::vector of length 3, capacity 4 = {1, 2, 3}

您可以看到矢量打印机只是打印出一些简单的信息。我想知道如何破解矢量打印机以便打印出所有元素?

此外,我的最终目标是打印出我的数据类型的向量。我还不知道如何打印单个数据,正在查看,但如果您能指出将打印机连接到单个数据和矢量的方向,我将不胜感激。

谢谢!

[更新] 我今天肯定是太努力了,数值都打印出来了,我没看到,唉。对不起。

我的下一步是为我的数据类型编写一个打印机,所以一旦我注册了该打印机,矢量打印机就可以自动使用它来打印单个数据,对吗?

【问题讨论】:

  • 也许我遗漏了什么,但您提到的“简单信息”似乎包括矢量内容——{1, 2, 3}
  • 它似乎正在打印出元素?

标签: c++ gdb


【解决方案1】:

我的下一步是为我的数据类型编写一个打印机,所以一旦我有了 该打印机已注册,矢量打印机可以自动使用它来 打印个人数据,对吗?

是的,没错。一个编写良好的容器漂亮的打印机(如果我自己可以这么说的话,libstdc++ 打印机当然符合条件)将返回一个可迭代对象,该对象产生代表包含数据的gdb.Value 实例。这让 gdb 也可以对这些值应用漂亮的打印机。

【讨论】:

    猜你喜欢
    • 2020-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    相关资源
    最近更新 更多