Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

string を使用したテキスト情報の管理

テキスト データを使用してチャートの動作を制御し、テキストを操作して自然言語出力を作成するには、string を使用します。string データは、C をアクション言語として使用する Stateflow® チャートでのみ使用できます。

string データの例

Stateflow では、"string" はテキストを引用符 ("..." または '...') で囲んだものです。たとえば、次のチャートは、string データを入力として取ります。その入力に基づいて、チャートは対応する string 出力を生成します。

string のシンボルを指定するには、[型] フィールドを [string] に設定します。Stateflow は、このデータ型にメモリ領域を動的に割り当てます。

あるいは、最大文字数で string データを作成できます。バッファー サイズが n 文字の string シンボルを指定するには、[型] フィールドを stringtype(n) に設定します。string のテキストをバッファーより短くすることはできますが、バッファー サイズを超えると、string 内のテキストは切り捨てられます。たとえば、前述のチャート内のシンボル outputstringtype(10) として指定されている場合は、ステート On 内の値は切り捨てられて "All system" になります。コンフィギュレーション パラメーター [string 切り捨てチェック] に応じて、シミュレーションを停止して string データの切り捨てを診断できます。

string 切り捨てチェック説明
エラーシミュレーションはエラーで停止します。
警告string は切り捨てられます。シミュレーションは警告を表示して続行します。
なしstring は切り捨てられます。シミュレーションは、エラーや警告を表示せずに続行します。

メモ

C や C++ とは異なり、Stateflow は、エスケープ シーケンスをリテラル文字として解釈します。たとえば、string "\n" に含まれているのはバックスラッシュと n の 2 文字であり、改行文字ではありません。

string による計算

Stateflow チャートで string データを操作するには、次の表に示す演算子を使用します。

演算子構文説明
strcpy

strcpy(dest,src)

dest = src の、代替の実行方法です。

string データを s1s2 および s3 に割り当てます。

strcpy(s1,'So long');
strcpy(s2,"Farewell");
strcpy(s3,s2);

dest = src

string srcdest に割り当てます。

string データを s4s5 および s6 に割り当てます。

s4 = 'Auf Wiedersehen';
s5 = "Adieu";
s6 = s4;
strcat

dest = strcat(s1,...,sN)

複数の string s1,...,sN を連結します。

複数の string を連結して "Stateflow" を形成します。

s1 = "State";
s2 = "flow";
dest = strcat(s1,s2);

substr

dest = substr(str,i,n)

string stri 番目の文字から始まる、長さ n の部分文字列を返します。0 ベースのインデックスを使用します。

長い string から部分文字列 "Stateflow" を抽出します。

str = "Stateflow, rule the waves!";
dest = substr(str,0,9);

tostring

dest = tostring(X)

数値、boolean、列挙型データを string に変換します。

数値を string "1.2345" に変換します。

dest = tostring(1.2345);

ブール値を string "true" に変換します。

dest = tostring(1==1);

列挙値を string "RED" に変換します。

dest = tostring(RED);

strcmp

tf = strcmp(s1,s2)

string s1s2 を比較します。2 つの string が同一の場合は 0 を返します。それ以外の場合は非ゼロの整数を返します。

  • 出力値の符号は、入力 string s1s2 の辞書的な順序によって異なります。

  • 出力値の大きさは、使用するコンパイラによって異なります。この値は、シミュレーションと生成コードで異なる場合があります。

string は、サイズと内容が同じ場合に同一と見なされます。

この演算子は、コード生成用に選択するコンパイラに応じて、C ライブラリ関数 strcmp または C++ 関数 string.compare と一致します。この演算子の動作は、MATLAB® 内の関数 strcmp とは異なります。

0 を返します (string が互いに等しい)。

tf = strcmp("abc","abc");

非ゼロ値を返します (string が互いに等しくない)。

tf = strcmp("abc","abcd");

s1 == s2

strcmp(s1,s2) == 0 の、代替の実行方法です。

true を返します。

"abc" == "abc";

s1 != s2

strcmp(s1,s2) != 0 の、代替の実行方法です。

true を返します。

"abc" != "abcd";

tf = strcmp(s1,s2,n)

s1s2 の最初の n 文字が同一の場合に 0 を返します。

0 を返します (部分文字列が互いに等しい)。

tf = strcmp("abc","abcd",3);

strlen

L = strlen(str)

string str 内の文字数を返します。

9 を返します。

L = strlen("Stateflow");

str2double

X = str2double(str)

string str 内のテキストを倍精度値に変換します。

str には、数値を表すテキストが含まれます。数値を表すテキストには以下を含めることができます。

  • 数字

  • 小数点

  • 先頭の + または - 記号

  • 10 のべき乗のスケール係数に先行する e

str2double がテキストを数値に変換できない場合、NaN 値を返します。

-12.345 を返します。

X = str2double("-12.345");

123400 を返します。

X = str2double("1.234e5");

str2ascii

A = str2ascii(str,n)

str 内の最初の n 文字の ASCII 値を含む、uint8 型の配列を返します (n は正の整数)。n に変数や式を使用することはサポートされていません。

uint8 配列 {72,101,108,108,111} を返します。

A = str2ascii("Hello",5);

ascii2str

dest = ascii2str(A)

uint8 型の配列 A の ASCII 値を string に変換します。

string "Hi!" を返します。

A[0] = 72;
A[1] = 105;
A[2] = 33;
dest = ascii2str(A);

string を使用する場所

string データは Stateflow 階層の次のレベルで使用します。

  • チャート

  • サブチャート

  • ステート

string データは以下の引数として使用します。

  • ステート アクション

  • 条件アクションと遷移アクション

  • グラフィカル関数

  • Simulink® 関数

  • C をアクション言語として使用する真理値表関数

Simulink Coder™ がインストールされている場合は、string データをシミュレーションとコード生成に使用できます。

参考

| | | | | | | |

関連するトピック