首页 > 解决方案 > Arduino中的字符串到字符

问题描述

char string2char(String ipString){
  char opChar[ipString.length() + 1];
  memset(opChar, 0, ipString.length() + 1);

  for (int i = 0; i < ipString.length(); i++)
    opChar[i] = ipString.charAt(i);
}

称为char charssId[AP_NameString.length()+1] = string2char(AP_NameString);

调用函数的正确方法是什么?想要将 String ssid 更改为 char ssid,使其与 esp8266 库兼容。

标签: c++stringarduinochar

解决方案


char charssId[AP_NameString.length()+1] = string2char(AP_NameString);

这条线是行不通的。因为char charssId[AP_NameString.length()+1]这意味着您要声明一个特定大小的数组,同时用方法返回的数组替换它。

您可以执行以下操作,

char* string2char(String ipString){ // make it to return pointer not a single char
  char* opChar = new char[ipString.length() + 1]; // local array should not be returned as it will be destroyed outside of the scope of this function. So create it with new operator.
  memset(opChar, 0, ipString.length() + 1);

  for (int i = 0; i < ipString.length(); i++)
    opChar[i] = ipString.charAt(i);
  return opChar; //Add this return statement.
}

// Now call this as below,
char* charssId = string2char(AP_NameString); // make the variable as pointer so that it can hold an array address.
// use it as a char array.
delete[] charssId; // Remember to delete it after finished using it.

推荐阅读