プログラム

C++ Arduinoで別の文字列型へ変換(std::string、String、char[])

ESP32(いーえすぴーさんにー)とかで、たまに使う開発ツールArduino IDE(あるでぃのあいでぃーいー)。

文字列を別の文字列型へ変換するとき、いつもどうやってたかなー。と、思い出す事が多いので、もうメモってしまいました。

ESP32やArduino IDEのセットアップのお話は、以下ご参考ください。

Arduino文字列変換

String → std::string

  std::string stdstr;
  String      str;

  str = "String test";
  // String -> std::string
  stdstr = str.c_str();

String → char[]

  String      str;
  char        c[256];

  str = "String test";
  // String -> char[]
  strcpy(c, str.c_str());

std::string → String

  std::string stdstr;
  String      str;

  stdstr = "std::string test";
  // std::string -> String
  str = stdstr.c_str();

std::string → char[]

  std::string stdstr;
  char        c[256];

  stdstr = "std::string test";
  // std::string -> char[]
  strcpy(c, stdstr.c_str());

char[] → String

  String      str;
  char        c[256];

  strcpy(c, "char[] test");
  // char[] -> String
  str = c;

char[] → std::string

  std::string stdstr;
  char        c[256];

  strcpy(c, "char[] test");
  // char[] -> std::string
  stdstr = c;

参考:Arduinoソースまとめ

void setup() {
  Serial.begin(115200);
  Serial.println("string test start ...");

  std::string stdstr;
  String      str;
  char        c[256];

  str = "String test";
  Serial.println(str);
  // String -> std::string
  stdstr = str.c_str();
  Serial.println(stdstr.c_str());
  // String -> char[]
  strcpy(c, str.c_str());
  Serial.println(c);

  stdstr = "std::string test";
  Serial.println(stdstr.c_str());
  // std::string -> String
  str = stdstr.c_str();
  Serial.println(str);
  // std::string -> char[]
  strcpy(c, stdstr.c_str());
  Serial.println(c);

  strcpy(c, "char[] test");
  Serial.println(c);
  // char[] -> String
  str = c;
  Serial.println(str);
  // char[] -> std::string
  stdstr = c;
  Serial.println(c);

  Serial.println("string test end ...");
}

void loop() {
}

実行結果

string test start …
String test
String test
String test
std::string test
std::string test
std::string test
char[] test
char[] test
char[] test
string test end …

最後に

Arduino IDEは、最近ではSpresense(ESP32みたいな)とか、ATtiny(めっちゃ小っちゃいマイコン)とかの開発も出来たりするので、身近な開発環境になっているかもしれません。

しばらく手を付けていないと、あれなんだったっけなーで、無駄な時間を取られることってよくあります・・・。私の脳内はメモリ容量がとても少ないので大変です。HDDへの保存が必須です。

最後まで見てくれてありがとう。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA