[英]Octave - Accessing Values in octave_value_list
我在使用 Octave C++ API 的同時在 C++ 開發環境中工作。
我想知道如何在調用函數時訪問返回的八度值列表中的單個值。
例如,當我調用時鍾函數時,我返回了一個 Octave_value_list,它顯示了以下內容:
2014.0000 8.0000 22.0000 10.0000 1.0000 44.7120
我現在想訪問每個值,但我不知何故只能獲得年份。 我缺少一些語法,也許有人可以幫助我。
有用的文檔來回答您的問題:
octave_value_list
doxygenoctave_value
doxygen 你提到的值是一個多octave_value
以S octave_value_list
,或者是一個值的數組中的單個octave_value
在octave_value_list
?
請注意,單個octave_value
度值不一定是標量值。 它可以是一個具有 n 維和多個元素的數組。 它可以是結構體、結構體數組或元胞數組。 它基本上可以是八度變量可以是的任何東西。 例如,調用:
foo ([1 2 3], "string", {678, "other string"}, struct ("over", 9000))
將創建一個octave_value_list
與4 octave_value
S和:
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 ();
雖然你可以使用的一個is_x()
方法octave_value
,該建議是檢查的價值error_state
轉換后,以檢查是否出了什么差錯。 這將提供更自然的 Octave 體驗,並將處理您期望在 Octave 中為您提供的不同類型之間的轉換。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.