C++ 在c/c+中是否有类似于PHP的var_dump的东西+;?

C++ 在c/c+中是否有类似于PHP的var_dump的东西+;?,c++,windows,dump,C++,Windows,Dump,我正在寻找一个可以用来转储大多数数据结构的API,c/c++中是否有这样一个API?boost有一个序列化库,您可以显式使用它来转储数据结构 如果你想让它更自动地发生,你的选择是暗淡的。一个C++程序可以检查自己的调试符号,或者编译一些额外的代码——也许是参照GCC-XML输出自动生成的,或者使用OpenC++之类的工具自动生成一些元数据。 我正在寻找一个可以用来转储大多数数据结构的API,c/c++中有吗 简短回答:没有 较长的答案:C++没有反射。也就是说,无法在运行时分析未知的数据结构。您

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

boost有一个序列化库,您可以显式使用它来转储数据结构

如果你想让它更自动地发生,你的选择是暗淡的。一个C++程序可以检查自己的调试符号,或者编译一些额外的代码——也许是参照GCC-XML输出自动生成的,或者使用OpenC++之类的工具自动生成一些元数据。 我正在寻找一个可以用来转储大多数数据结构的API,c/c++中有吗

简短回答:没有

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

<>但是,请注意C++有很多工具使这更容易。例如,给定一个简单的通用
dump()
模板:

template< typename T >
inline void dump(std::ostream& os, const T& obj) {os << obj;}
模板
内联空转储(std::ostream&os,const T&obj){os
无效转储(std::ostream&os,OutIt开始,OutIt结束)
{
如果(开始!=结束)

操作系统我不这么认为。C/C++不是为这类东西设计的。最好你自己在互联网上查一下不同的数据类型可以做什么,等等。需要一个专门的
std::pair
来转储集合和映射。一些复杂的问题,例如转义字符串、浮点精度…@Tony:是的,对于映射和多重映射(但不是针对集合)确实需要重载。(顺便说一句,没有专门化,因为这必须是部分专门化,我们没有函数模板,因为有重载…)是的,对于某些其他类型,您可能需要添加更多重载。然而,我特意留下了一个简单的示例。它已经让您走得很远了。
template< typename OutIt >
void dump(std::ostream& os, OutIt begin, OutIt end)
{
  if(begin != end)
    os << *begin++;
  while(begin != end) {
    os << ", ";
    dump(*begin++);
  }
}