我们如何提取/打印std :: tuple中的单个值?GDB:我们如何从std :: tuple中提取值
下面是一个名为test.cc的文件中的示例程序。
#include <tuple>
#include <iostream>
using namespace std;
int main() {
auto t = make_tuple(111, 222);
cout << std::get<0>(t) << endl
<< std::get<1>(t) << endl;
return 0;
}
编译它
g++ --std=c++11 -g test.cc
运行它在gdb
gdb --args ./a.out
...
(gdb) start
Temporary breakpoint 1 at 0x400836: file test.cc, line 7.
Starting program: /home/fmlheureux/a.out
Temporary breakpoint 1, main() at test.cc:7
7 auto t = make_tuple(111, 222);
(gdb) n
9 << std::get<1>(t) << endl;
(gdb) p t
$1 = std::tuple containing = {[1] = 111, [2] = 222}
最后的命令打印的元组作为一个整体。我如何提取个人价值观?我的天真失败。
(gdb) p get<0>(t)
No symbol "get<0>" in current context.
(gdb) p std::get<0>(t)
No symbol "get<0>" in namespace "std".
我的解决方案是使用'struct'而不是'tuple'。 gdb可以处理它。当然,实际上gdb应该只支持元组访问...... – TheJJ