Arduino-string-object
Arduino-文字列オブジェクト
Arduinoプログラミングで使用される2番目のタイプの文字列は、文字列オブジェクトです。
オブジェクトとは何ですか?
オブジェクトは、データと関数の両方を含む構成体です。 Stringオブジェクトは、変数と同様に作成し、値または文字列を割り当てることができます。 Stringオブジェクトには、Stringオブジェクトに含まれる文字列データを操作する関数(オブジェクト指向プログラミング(OOP)では「メソッド」と呼ばれます)が含まれています。
次のスケッチと説明により、オブジェクトとは何か、Stringオブジェクトの使用方法が明確になります。
例
void setup() {
String my_str = "This is my string.";
Serial.begin(9600);
//(1) print the string
Serial.println(my_str);
//(2) change the string to upper-case
my_str.toUpperCase();
Serial.println(my_str);
//(3) overwrite the string
my_str = "My new string.";
Serial.println(my_str);
//(4) replace a word in the string
my_str.replace("string", "Arduino sketch");
Serial.println(my_str);
//(5) get the length of the string
Serial.print("String length is: ");
Serial.println(my_str.length());
}
void loop() {
}
結果
This is my string.
THIS IS MY STRING.
My new string.
My new Arduino sketch.
String length is: 22
文字列オブジェクトが作成され、スケッチの上部に値(または文字列)が割り当てられます。
String my_str = "This is my string." ;
これにより、 my_str という名前のStringオブジェクトが作成され、「This is my string。」という値が与えられます。
これは、変数を作成し、整数などの値を割り当てることと比較できます-
int my_var = 102;
スケッチは次のように機能します。
文字列を印刷する
文字列は、文字配列文字列のように、シリアルモニタウィンドウに出力できます。
文字列を大文字に変換する
作成された文字列オブジェクトmy_strには、操作できる多くの関数またはメソッドがあります。 これらのメソッドは、オブジェクト名の後にドット演算子(。)を使用し、次に使用する関数の名前を使用して呼び出されます。
my_str.toUpperCase();
- toUpperCase()関数は、String型の *my_str オブジェクトに含まれる文字列を操作し、オブジェクトに含まれる文字列データ(またはテキスト)を大文字に変換します。 Stringクラスに含まれる関数のリストは、Arduino Stringリファレンスにあります。 技術的には、Stringはクラスと呼ばれ、Stringオブジェクトの作成に使用されます。
文字列を上書きする
割り当て演算子は、古い文字列を置き換える my_str オブジェクトに新しい文字列を割り当てるために使用されます
my_str = "My new string." ;
代入演算子は文字配列文字列では使用できませんが、文字列オブジェクトでのみ機能します。
文字列内の単語を置き換える
replace()関数は、渡された最初の文字列を、渡された2番目の文字列で置き換えるために使用されます。 replace()は、Stringクラスに組み込まれている別の関数であるため、Stringオブジェクトmy_strで使用できます。
文字列の長さを取得する
文字列の長さの取得は、length()を使用して簡単に実行できます。 サンプルスケッチでは、length()によって返される結果は、中間変数を使用せずにSerial.println()に直接渡されます。
文字列オブジェクトを使用する場合
Stringオブジェクトは、文字列の文字配列よりもはるかに使いやすいです。 オブジェクトには、文字列に対して多数の操作を実行できる組み込み関数があります。
Stringオブジェクトを使用する主な欠点は、大量のメモリを使用し、ArduinosのRAMメモリをすぐに使い果たす可能性があることです。これにより、Arduinoがハング、クラッシュ、または予期せず動作する可能性があります。 Arduinoのスケッチが小さく、オブジェクトの使用が制限されている場合、問題はないはずです。
文字配列文字列の使用はより難しく、これらのタイプの文字列を操作するには独自の関数を作成する必要がある場合があります。 利点は、作成する文字列配列のサイズを制御できるため、配列を小さくしてメモリを節約できることです。
文字列配列の配列境界の終わりを超えて書き込まないようにする必要があります。 文字列オブジェクトにはこの問題はなく、操作するのに十分なメモリがあれば、文字列の境界を処理します。 Stringオブジェクトは、メモリが不足すると存在しないメモリに書き込もうとすることができますが、操作対象の文字列の末尾には上書きしません。
文字列が使用される場所
この章では、文字列、メモリ内での文字列の動作、および操作について学習しました。
文字列の実際の使用については、シリアルモニターウィンドウからユーザー入力を取得し、入力を文字列に保存する方法を学習するときに、このコースの次のパートで取り上げます。