在数据集中获取多个属性的名称和值

Posted

技术标签:

【中文标题】在数据集中获取多个属性的名称和值【英文标题】:Get more than an attribute's name and value in a dataset 【发布时间】:2017-01-13 08:59:55 【问题描述】:

我在 hdf5 文件中有一个数据集,它有 4 个属性。 4 attributes with string type

如何获取每个属性名称及其值?我只知道如何通过网站“ function website”中的int H5Aget_num_attrs( hid_t loc_id )函数要求属性号

但我不知道如何通过函数将属性名称添加到数组中。

有什么想法吗?祝你好运!

【问题讨论】:

这个问题无法理解。您应该问一个特定的问题,例如:我正在尝试从文件中读取一些属性,但 sscanf() 失败。并发布代码,以便其他人可以尝试帮助您。 【参考方案1】:

编辑:哦,你想要一个属性的名称吗?

你不能这样做。

~鳍~


编辑 2: 这是因为某些函数 xyzzy(sometype_t) 只能传递一种类型——因此您知道调用的属性是什么。


我将尝试找出您的问题所在。 如果英语不是你的第一语言,没有难过的感觉。否则,请,请,请,编辑您的问题。

不管怎样,

typedef struct 
    int a, b, c, d; /* four attributes.*/
 foo_t;

foo_t bar;

获取属性:

bar.a = 1;
bar.b = 2;
bar.c = 3;
bar.d = 4;

如果你有指针...

foo_t * baz = &bar /* baz is a pointer to bar. */

baz->a = 42;

【讨论】:

【参考方案2】:

您可以像这样检索存储在数据集中的 (4) 个属性的名称和相应值(在 C 中使用 HDFql - http://www.hdfql.com):

char script[1024];

HDFQL_CURSOR my_cursor; // declare cursor named "my_cursor"

hdfql_initialize(&my_cursor); // initialize cursor "my_cursor"

hdfql_execute("USE FILE my_example.h5"); // use (i.e. open) HDF file named "my_example.h5"

hdfql_execute("SHOW my_dataset/"); // retrieve all (4) attributes stored in dataset "my_dataset"

while (hdfql_cursor_next(NULL) == HDFQL_SUCCESS) // loop through all attributes retrieved

    sprintf(script, "SELECT FROM my_dataset/%s", hdfql_cursor_get_char(NULL)); // prepare script to select (i.e. read) the content of the attribute

    hdfql_cursor_use(&my_cursor);

    hdfql_execute(script); // execute script

    hdfql_cursor_next(NULL);

    hdfql_cursor_use_default();

    printf("Attribute '%s' contains '%s'\n", hdfql_cursor_get_char(NULL), hdfql_cursor_get_char(&my_cursor));  // print the attribute name and its value

【讨论】:

以上是关于在数据集中获取多个属性的名称和值的主要内容,如果未能解决你的问题,请参考以下文章

从核心数据读取时获取属性名称和值

利用反射获取一个类实例的所有属性名称和值 拼接为字符串

如何使用数据集在 C# 或 dotnet 中查找主键列名称?

根据某些列获取数据集中被调用次数最多的名称

源数据集中的动态工作表名称:Azure 数据工厂上的(Excel(Blob 存储))。 - 错误:请为您的数据集选择一个工作表

在android MP Chart内的多个数据集中隐藏一个数据集标签