😴

【Arduino】Stringからcharへの変換

に公開

Stringからchar*を得る

String型からchar*型を得るには、String::c_str()を使えば済みます。char型の配列を得るにはString::toCharArray()を使いますが、何やら煩雑そうです。配列もポインターに過ぎませんから、結果は同じことではないでしょうか。

https://github.com/arduino/ArduinoCore-avr/blob/master/cores/arduino/WString.h#L163

bufferとあるのは、Stringクラスのメンバー変数String::bufferです。

https://github.com/arduino/ArduinoCore-avr/blob/master/cores/arduino/WString.h#L196

既に存在するものを取得しているだけなので、「変換」と言うか否かは微妙ですね。

用例

void setup() {
    Serial.begin(115200);
    while (!Serial);

    // Stringの定義
    String sText("Hello");
    // char*を取得する
    const char* pcText = sText.c_str();

    // 配列の真似事
    Serial.println(pcText[0]);
    Serial.println(pcText[1]);
    Serial.println(pcText[2]);
    Serial.println(pcText[3]);
    Serial.println(pcText[4]);
}

void loop() {}

実行結果はこの通りです。

serial monitor
H
e
l
l
o

Discussion