我在使用Octave C++ API时在C++开发环境中工作.
我想知道在调用函数时如何在返回的octave_value_list中访问单个值.
例如,当我调用时钟函数时,我将返回一个octave_value_list,其中显示以下内容:
2014.0000 8.0000 22.0000 10.0000 1.0000 44.7120
我现在想要访问每个单一的价值,但我不知何故只能得到一年.我错过了一些语法,也许有人可以帮助我.
回答问题的有用文档:
octave_value_listoctave_value你提到的值是一个多octave_value在一个s octave_value_list,或者是一个值的一个数组octave_value 中的octave_value_list?
请注意,单个octave_value值不一定是标量值.它可以是具有n维和多个元素的数组.它可以是struct,struct数组或单元数组.它基本上可以是八度变量可以是的任何东西.例如,电话:
foo ([1 2 3], "string", {678, "other string"}, struct ("over", 9000))
Run Code Online (Sandbox Code Playgroud)
将创建一个octave_value_list4 octave_value秒和:
foo ([1 2 3])
Run Code Online (Sandbox Code Playgroud)
仍然会创造octave_value_list一个单一的octave_value.
你需要的第一件事就是找出你实际拥有的东西.你可以octave_value_list.length()用来获得一个想法,你可以octave_value通过简单地用圆括号对它们进行索引来获得个人信息().
for (int i =0; i < list.length (); i++)
do_stuff_with (list(i));
Run Code Online (Sandbox Code Playgroud)
一旦你得到了,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 ();
Run Code Online (Sandbox Code Playgroud)
虽然您可以使用其中一种is_x()方法octave_value,但建议检查error_state转换后的值以检查是否出现任何问题.这将提供更自然的Octave体验,并将处理您在Octave中为您预期的不同类型之间的转换.
| 归档时间: |
|
| 查看次数: |
1398 次 |
| 最近记录: |