(octave.info)Character Strings in Oct-Files


Next: Cell Arrays in Oct-Files Prev: Matrices and Arrays in Oct-Files Up: Oct-Files
Enter node , (file) or (file)node

A.1.3 Character Strings in Oct-Files
------------------------------------

A character string in Octave is just a special ‘Array’ class.  Consider
the example:

     #include <octave/oct.h>
     
     DEFUN_DLD (stringdemo, args, , "String Demo")
     {
       if (args.length () != 1)
         print_usage ();
     
       octave_value_list retval;
     
       charMatrix ch = args(0).char_matrix_value ();
     
       retval(1) = octave_value (ch, '\'');  // Single Quote String
     
       octave_idx_type nr = ch.rows ();
     
       for (octave_idx_type i = 0; i < nr / 2; i++)
         {
           std::string tmp = ch.row_as_string (i);
     
           ch.insert (ch.row_as_string (nr-i-1).c_str (), i, 0);
           ch.insert (tmp.c_str (), nr-i-1, 0);
         }
     
       retval(0) = octave_value (ch, '"');  // Double Quote String
     
       return retval;
     }

   An example of the use of this function is

     s0 = ["First String"; "Second String"];
     [s1,s2] = stringdemo (s0)
     ⇒ s1 = Second String
             First String

     ⇒ s2 = First String
             Second String

     typeinfo (s2)
     ⇒ sq_string
     typeinfo (s1)
     ⇒ string

   One additional complication of strings in Octave is the difference
between single quoted and double quoted strings.  To find out if an
‘octave_value’ contains a single or double quoted string use one of the
predicate tests shown below.

     if (args(0).is_sq_string ())
       octave_stdout << "First argument is a single quoted string\n";
     else if (args(0).is_dq_string ())
       octave_stdout << "First argument is a double quoted string\n";

   Note, however, that both types of strings are represented by the
‘charNDArray’ type, and so when assigning to an ‘octave_value’, the type
of string should be specified.  For example:

     octave_value_list retval;
     charNDArray ch;
     ...
     // Create single quoted string
     retval(1) = octave_value (ch);   // default constructor is sq_string
                OR
     retval(1) = octave_value (ch, '\'');  // explicitly create sq_string

     // Create a double quoted string
     retval(0) = octave_value (ch, '"');


automatically generated by info2www version 1.2.2.9