A.1.3 Oct文件中的字符串

Octave中的字符串只是一个特殊的字符串数组类考虑一下这个例子:

#include<octave/oct.h>DEFUN_DLD(字符串emo,args,“字符串演示”){if(args.length()!=1)print_usage();octave_value_list retval;charMatrix ch=args(0)char_matrix_value();retval(1)=octave_value(ch,'\'');//单引号字符串octave_idx_type nr=chrrows();对于(octave_idx_type i=0;i<nr/2;i++){std::String tmp=chrrow_as_String(i);ch.insert(ch.row_as_String(nr-i-1).c_str(),i,0);ch.insert(tmp_str(),nr-i-1,0),}retval(0)=Octave值(ch,'“');//双引号字符串return retval;}

此函数的使用示例如下

s0=[“第一字符串”;“第二字符串”];[s1,s2]=字符串emo(s0)⇒ s1=第二个字符串第一个字符串⇒ s2=第一字符串第二字符串类型信息(s2)⇒ sq_stringtypeinfo(s1)⇒ 一串

octave中字符串的另一个复杂性是单引号字符串和双引号字符串之间的差异。要了解是否Octave值包含单引号或双引号字符串,请使用下面显示的判断函数测试之一。

if(args(0).is_sq_string())octave_stdout<<“第一个参数是单引号字符串\n”;else if(args(0).is_dq_string())octave_stdout<<“第一个参数是双引号字符串\n”;

但是,请注意,这两种类型的字符串都从charNDArray类型,因此在赋值给Octave值,应指定字符串的类型。例如

Octave值列表retval;charNDArray ch;…//创建单引号字符串gretval(1)=Octave值(ch);//默认构造函数为sq_string ORretval(1)=Octave值(ch,'\'');//显式创建sq_string//创建双引号字符串gretval(0)=Octave值(ch,'“');

版权所有 © 2024 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号