在c / c ++中有类似PHP的var_dump吗?

时间:2010-10-05 07:51:09

标签: c++ windows dump

我正在寻找一种可用于转储大多数数据结构的API,c / c ++中是否有一个?

2 个答案:

答案 0 :(得分:3)

  

我正在寻找一种可用于转储大多数数据结构的API,c / c ++中是否有一个?

简短回答:不,没有。

更长的答案:C ++没有反射。也就是说,无法在运行时分析未知数据结构。您必须自己为要转储的任何数据结构编写转储例程,并根据其数据成员可用的内容构建。

但请注意,C ++有很多工具可以让它更容易。例如,给定一个简单的通用dump()模板:

template< typename T >
inline void dump(std::ostream& os, const T& obj) {os << obj;}

任何序列 的元素可以使用这个简单的函数转储:

template< typename OutIt >
void dump(std::ostream& os, OutIt begin, OutIt end)
{
  if(begin != end)
    os << *begin++;
  while(begin != end) {
    os << ", ";
    dump(*begin++);
  }
}

答案 1 :(得分:1)

boost有一个序列化库,您可以明确地使用它来使您的数据结构可转储。

如果您希望它更自动地发生,您的选择是暗淡的。 C ++程序可以检查自己的调试符号,或者编译一些额外的代码 - 可能是参考GCC-XML输出自动生成的,或者使用像OpenC ++这样的工具来自动生成一些元数据。