如何在 Matlab 中的 HDF5 属性字符串中换行
How to put a line break in HDF5 attribute string in Matlab
我想知道如何在 HDF5 属性字符串下方换行。
DescType_id = H5T.copy ('H5T_C_S1');
H5T.set_size (DescType_id, numel(description));
H5T.set_strpad(DescType_id,'H5T_STR_NULLTERM');
DescAttr_id = H5A.create (g2id, 'description', DescType_id, ...
STimeSpace, 'H5P_DEFAULT');
H5A.write (DescAttr_id, DescType_id, description);
H5T.close(DescType_id);
H5A.close(DescAttr_id);
我的描述变量是:
description="Experiment:\nID: 1234\nLocation: London"
我希望上面代码中的换行符类似于“\n”。预期输出:
Group '/'
Group '/G1'
Attributes:
'description': 'Experiment:
ID: 1234
Location: London'
非常感谢您的帮助。谢谢
您应该将 description
设置为正确的字符串:
description = sprintf('Experiment:\nID: 1234\nLocation: London');
应该注意,通常的转义序列实际上是由 I/O 函数(即 fprintf
、sprintf
)而不是 MATLAB 语言解析器解释的。这意味着,例如,文字 '\n'
(在 MATLAB 中)是一个包含两个字符的字符数组,一个反斜杠和一个 n
,而在 C 中,文字 "\n"
是一个 const char两个字符的数组,一个是换行符,另一个是字符串终止符 NUL。
一种不可移植但 "equivalent" 编写上述 description
的方法是将子字符串与行分隔符连接起来:
description = ['Experiment:' char(10) 'ID: 1234' char(10) 'Location: London'];
其中 char(10)
是具有 UTF-8 代码 10 的字符,恰好是换行符。
我想知道如何在 HDF5 属性字符串下方换行。
DescType_id = H5T.copy ('H5T_C_S1');
H5T.set_size (DescType_id, numel(description));
H5T.set_strpad(DescType_id,'H5T_STR_NULLTERM');
DescAttr_id = H5A.create (g2id, 'description', DescType_id, ...
STimeSpace, 'H5P_DEFAULT');
H5A.write (DescAttr_id, DescType_id, description);
H5T.close(DescType_id);
H5A.close(DescAttr_id);
我的描述变量是:
description="Experiment:\nID: 1234\nLocation: London"
我希望上面代码中的换行符类似于“\n”。预期输出:
Group '/'
Group '/G1'
Attributes:
'description': 'Experiment:
ID: 1234
Location: London'
非常感谢您的帮助。谢谢
您应该将 description
设置为正确的字符串:
description = sprintf('Experiment:\nID: 1234\nLocation: London');
应该注意,通常的转义序列实际上是由 I/O 函数(即 fprintf
、sprintf
)而不是 MATLAB 语言解析器解释的。这意味着,例如,文字 '\n'
(在 MATLAB 中)是一个包含两个字符的字符数组,一个反斜杠和一个 n
,而在 C 中,文字 "\n"
是一个 const char两个字符的数组,一个是换行符,另一个是字符串终止符 NUL。
一种不可移植但 "equivalent" 编写上述 description
的方法是将子字符串与行分隔符连接起来:
description = ['Experiment:' char(10) 'ID: 1234' char(10) 'Location: London'];
其中 char(10)
是具有 UTF-8 代码 10 的字符,恰好是换行符。