在 C++ 中不使用字段名称打印实例化结构的值

2024-02-07

我可以做吗?

例如,考虑以下结构:

struct bag {
     string fruit;
     string book;
     string money;
};

我想以顺序形式打印结构包实例的字段值并获得如下输出:

apple
Computer Networking, A top-down Approach
100

但不使用领域的名称(水果、书籍和金钱)。任何帮助,将不胜感激。我知道的唯一信息是所有字段都是 C++ 字符串。


虽然C++没有反射,但您可以使用以下命令制作自己的反射工具Boost.Hana http://boostorg.github.io/hana/。这是一个完整的程序,它迭代结构体的成员,打印它们的名称和值。

Hana 需要一个符合 C++14 标准的现代编译器,这意味着最新版本的 Clang 或 GCC 6+ 是您目前此代码的唯一选择。

编辑:此代码现在使用BOOST_HANA_ADAPT_STRUCT代替BOOST_HANA_ADAPT_ADT.

#include <boost/hana/adapt_struct.hpp>
#include <boost/hana/for_each.hpp>
#include <boost/hana/fuse.hpp>
#include <string>
#include <iostream>

namespace hana = boost::hana;

using std::string;

struct bag {
    string fruit;
    string book;
    string money;
};

BOOST_HANA_ADAPT_STRUCT(bag, fruit, book, money);

int main() {

    bag my_bag{ "Apple", "To Kill A Mockingbird", "100 doubloons" };

    hana::for_each(my_bag, hana::fuse([](auto member, auto value) {
        std::cout << hana::to<char const*>(member) << " = " << value << "\n";
    }));
}

Output:

fruit = Apple
book = To Kill A Mockingbird
money = 100 doubloons
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C++ 中不使用字段名称打印实例化结构的值 的相关文章

  • 在结构中使用 typedef 枚举并避免类型混合警告

    我正在使用 C99 我的编译器是 IAR Embedded workbench 但我认为这个问题对于其他一些编译器也有效 我有一个 typedef 枚举 其中包含一些项目 并且我向该新类型的结构添加了一个元素 typedef enum fo
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • 为什么当实例化新的游戏对象时,它没有向它们添加标签? [复制]

    这个问题在这里已经有答案了 using System Collections using System Collections Generic using UnityEngine public class Test MonoBehaviou
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • 关于 C++ 转换:参数 1 从“[some_class]”到“[some_class]&”没有已知的转换

    我正在研究 C 并且遇到了一个错误 我不知道确切的原因 我已经找到了解决方案 但仍然想知道原因 class Base public void something Base b int main Base b b something Base
  • 不同枚举类型的范围和可转换性

    在什么条件下可以从一种枚举类型转换为另一种枚举类型 让我们考虑以下代码 include
  • 在 ASP.NET 5 中使用 DI 调用构造函数时解决依赖关系

    Web 上似乎充斥着如何在 ASP NET 5 中使用 DI 的示例 但没有一个示例显示如何调用构造函数并解决依赖关系 以下只是众多案例之一 http social technet microsoft com wiki contents a
  • 使用 WebClient 时出现 System.Net.WebException:无法创建 SSL/TLS 安全通道

    当我执行以下代码时 System Net ServicePointManager ServerCertificateValidationCallback sender certificate chain errors gt return t
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 什么时候虚拟继承是一个好的设计? [复制]

    这个问题在这里已经有答案了 EDIT3 请务必在回答之前清楚地了解我要问的内容 有 EDIT2 和很多评论 有 或曾经 有很多答案清楚地表明了对问题的误解 我知道这也是我的错 对此感到抱歉 嗨 我查看了有关虚拟继承的问题 class B p
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • WPF/C# 将自定义对象列表数据绑定到列表框?

    我在将自定义对象列表的数据绑定到ListBox in WPF 这是自定义对象 public class FileItem public string Name get set public string Path get set 这是列表
  • 在 String.Format 中插入格式化字符?

    我用谷歌搜索了这个 但 VB Net 2008 似乎不允许在 String Format 中插入格式化字符 例如 t r n BAD MessageBox Show String Format 0 tab 1 Foo Bar BAD Mes
  • IEnumreable 动态和 lambda

    我想在 a 上使用 lambda 表达式IEnumerable
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况

随机推荐

  • project.build.finalName 的值是多少?

    The Maven文档 http docs codehaus org display MAVENUSER MavenPropertiesGuide谈论一个名为project build finalName 但我找不到基于其他值设置的值的定义
  • JavaScript:闭包中的自动 getter 和 setter 无需 eval?

    Note 关于 JavaScript 中的 getter 和 setter 有很多问题 请参阅Javascript Getter 和 Setter https stackoverflow com questions 11134597 jav
  • Reactive Spring 不支持 ServerHttpRequest 作为 REST 端点测试中的参数?

    这个问题非常类似于this one https stackoverflow com questions 40361298 reactive spring does not support httpservletrequest as para
  • 解决 Pouch Couch DB

    我正在开发一个离线工作的原型网站 该网站利用 Pouch DB 以便在上线时同步回服务器上的 CouchDB The Pouch DB 冲突指南 http pouchdb com guides conflicts html says 要解决
  • LogicException:Symfony\Bundle\SwiftmailerBundle\DataCollector\MessageDataCollector 中缺少默认数据

    在 Symfony 2 5 5 和 Swiftmailer 5 3 0 中出现此异常 我正在关注食谱示例 http symfony com doc current cookbook email testing html确切地 调用时抛出错误
  • 位置粘性在 IE 或 Safari 中不起作用

    我正在用 CSS 创建一张卡片 它在 Chrome 中工作得很好 但在 IE Safari 浏览器中不起作用 nb position sticky width 280px height 450px margin 0 auto overflo
  • GIT GUI 无法访问欢迎屏幕

    I am trying to work on a new repository in my GIT GUI 但是当我打开 GIT GUI 时 它会直接带我到第二页并打开一些以前的存储库 附上截图 我如何切换我的项目 如何获得 Git GUI
  • Xcode Base 国际化不起作用

    我正在尝试本地化我的应用程序 我注意到 如果我添加一种语言 每个本地化文件都会增加一倍 这样就不可能维护代码或故事板 所以我了解到我需要基地国际化 问题是 当我在 xcode 项目设置中选择该复选框时 它会显示一个没有的窗口没有什么可选择的
  • 获取深度多维数组的所有子元素

    我有这样的数组 array array id gt 1 children gt array array id gt 2 parent id gt 1 array id gt 3 parent id gt 1 children gt arra
  • 省略某些值时如何创建桑基图

    我需要创建一个桑基图R with plotly超过3年 我的group列应该是节点 1 worst 2 bad 3 good and 4 best 但是在 2019 年和 2020 年我有 需要一个额外的节点5 not available
  • 将 master 分支移动到另一个分支并启动新的 master

    我一直在使用 master 分支进行开发 并希望将其清除为只有发布提交 以及它的用途 如何将所有内容从 master 复制到开发分支然后重新启动 master 从master分支创建开发分支并删除master分支 并重新创建它 以防万一您不
  • 多个视图的单一视图控制器

    我正在尝试制作一个具有多个视图但只有一个视图控制器的注册表单 进入下一个视图后 我将输入写入一个结构 该结构稍后将发送到服务器 我面临的问题是 进入新视图时 VC 会重新初始化 因此用户结构也会重新初始化 有什么办法可以避免拥有多个 Vie
  • 使用MFC将文件路径转换为URL

    我见过类似的问题 例如用 C 对 URL 进行编码 解码 https stackoverflow com q 154536 2287576 但是 对我来说 CString strURL DWORD dwSize MAX PATH if In
  • 使用C程序的随机数数组

    我是 C 程序新手 我需要创建 100 个 50 到 70 之间的随机数 并将它们存储在 double 数组中 我该如何开始 创建一个数组 int my array 100 为随机数生成器播种 srand 0 循环遍历你的数组并填充它 in
  • 如何使用 AFNetworking 2 批量请求?

    因此 我正在使用 AFNetworking 2 0 重写 iOS 7 的应用程序 但遇到了一次发送一批请求并跟踪其进度的问题 在旧的 AFNetworking 中有enqueueBatchOfHTTPRequestOperations pr
  • C# httpwebrequest 和 javascript

    我正在使用 C HttpWebRequest 来获取网页的一些数据 问题是一些数据在页面加载后使用 javascript ajax 更新 但我没有在响应字符串中获取它 有没有办法让网络请求等待页面中的所有脚本执行完毕 Thanks Amit
  • React Native:包解析错误

    当我尝试使用以下命令生成发行版本时 cd android gradlew assembleRelease 目录下会生成一个apk文件 app build outputs apk app release unsigned apk 不幸的是 当
  • NextJS 中的环境变量未定义

    我正在使用next auth需要使用环境变量的库如下 Providers GitHub clientId process env GITHUB ID clientSecret process env GITHUB SECRET 然而 当我测
  • Google Play 显示的 API 级别错误

    在 Google Play 中上传我的 APK 后 它会显示在 APK 详细信息中 API 级别 14 17 并在 Play 商店中公开展示 4 0 及更高版本 虽然我以前的版本有 API 级别 14 但我更改了我的应用程序并设置了以下 m
  • 在 C++ 中不使用字段名称打印实例化结构的值

    我可以做吗 例如 考虑以下结构 struct bag string fruit string book string money 我想以顺序形式打印结构包实例的字段值并获得如下输出 apple Computer Networking A t