gpt4 book ai didi

c++ - Octave - 访问 octave_value_list 中的值

转载 作者:行者123 更新时间:2023-11-30 01:17:01 28 4
gpt4 key购买 nike

我在 C++ 开发环境中工作,同时使用 Octave C++ API。

我想知道如何在调用函数时访问返回的 octave_value_list 中的单个值。

例如,当我调用时钟函数时,我会返回一个显示以下内容的 octave_value_list:

2014.0000 8.0000 22.0000 10.0000 1.0000 44.7120

我现在想访问每个值,但不知何故我只能获取年份。我缺少一些语法,也许有人可以帮助我。

最佳答案

回答您问题的有用文档:


您提到的值是 octave_value_list 中的多个 octave_value,或者它是单个 octave_value 中的值数组octave_value_list?

请注意,单个 octave_value 不一定是标量值。它可以是一个具有 n 维和多个元素的数组。它可以是结构、结构数组或元胞数组。它基本上可以是 Octave 变量可以是的任何东西。例如,调用:

foo ([1 2 3], "string", {678, "other string"}, struct ("over", 9000))

将创建一个包含 4 个 octave_valueoctave_value_list 并且:

foo ([1 2 3])

仍将创建一个 octave_value_list 但只有一个 octave_value

您需要做的第一件事就是弄清楚您实际拥有的是什么。您可以使用 octave_value_list.length() 来获得一个想法,您可以通过简单地用圆括号 () 索引它们来获得单独的 octave_value

for (int i =0; i < list.length (); i++)
do_stuff_with (list(i));

一旦你得到一个octave_value,你就可以尝试转换成很多东西。

std::string   s  = val.string_value ();
bool b = val.bool_value ();
boolMatrix bm = val.bool_matrix_value ();
Cell c = val.cell_value ();
NDarray nd = val.array_value ();
int i = val.int_value ();
Array<double> ad = val.vector_value ();

虽然您可以使用 octave_valueis_x() 方法之一,但建议在转换后检查 error_state 的值检查是否有任何问题。这将提供更自然的 Octave 体验,并将处理您期望在 Octave 中为您处理的不同类型之间的转换。

关于c++ - Octave - 访问 octave_value_list 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25442432/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com