当前位置:  开发笔记 > 编程语言 > 正文

将c ++结构转储到文本文件中

如何解决《将c++结构转储到文本文件中》经验,为你挑选了2个好方法。

如何将C++中的结构内容写入文本文件?我想要做的是,比如我有一个名为A的结构,数据成员是A.one,A.two等等,我想逐行将它们写成文本文件,就像这样

结构A
A.one =值
A.two =值...

结构B
B.one =值
B.two =值

基本上我想要转储..有一个简单的方法来做到这一点?什么是最好的I/O方法?CFile的?iostream的?谢谢..是否有更简单的方法来转储类的成员数据的所有值?


编辑:废话,谢谢你们..



1> Simon Buchan..:

在C++中没有反射,所以你必须手动完成,例如(使用iostream,为了简单):

dump_A(std::cout, "A", a);

void dump_A(std::iostream& os, const char* name, A const& a)
{
    os << "Structure " << name << '\n'
       << name << ".one = " << a.one << '\n'
       << name << ".two = " << a.two << '\n';
}



2> Dan Olson..:

C++不是内省的.也就是说,它对结构的内容一无所知.您必须使用某种手动注释或反射系统来执行此操作.

当然,如果您对结构的硬编码信息没有问题,可以使用任何I/O方法转储信息.

例如:

struct A
{
  int member1;
  char member2;
};

void PrintA (const A& a)
{
  std::printf ("member1: %d\n", a.member1);
  std::printf ("member2: %c\n", b.member2);
}

正如您所看到的,这是繁琐的,因为它需要对结构有深入了解,并且如果结构发生变化则不会自动更新.但是,反射系统"正常"执行此操作的开销可能是一个缺点,特别是如果您正在学习.

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有