在Arduino上将int或String转换为char数组

Chr*_*ris 77 string arduino char

我从我的Arduino上的一个模拟引脚获取一个int值.如何String将其连接到a 然后将其转换Stringchar[]

有人建议我尝试char msg[] = myString.getChars();,但我收到一条getChars不存在的消息.

Pet*_*sen 125

  1. 要转换和追加整数,请使用operator + =(或成员函数concat):

    String stringOne = "A long integer: ";
    stringOne += 123456789;
    
    Run Code Online (Sandbox Code Playgroud)
  2. 要将字符串作为类型char[],请使用toCharArray():

    char charBuf[50];
    stringOne.toCharArray(charBuf, 50) 
    
    Run Code Online (Sandbox Code Playgroud)

在该示例中,只有49个字符的空间(假设它以null结尾).您可能希望使大小动态化.

  • 为我节省了很多修补时间.谢谢!为了使char []大小动态化,执行类似`char charBuf [stringOne.length()+ 1]的操作. (13认同)
  • 我动态地这样做:`char ssid [ssidString.length()];``ssidString.toCharArray(ssid,ssidString.length());` (9认同)

Ale*_*ing 56

只是作为参考,在这里是如何相互转换的例子String,并char[]具有动态长度-

// Define 
String str = "This is my string"; 

// Length (with one extra character for the null terminator)
int str_len = str.length() + 1; 

// Prepare the character array (the buffer) 
char char_array[str_len];

// Copy it over 
str.toCharArray(char_array, str_len);
Run Code Online (Sandbox Code Playgroud)

是的,对于像类型转换这样简单的事情来说,这很痛苦,但遗憾的是这是最简单的方法.


小智 10

如果不需要可修改的字符串,可以将其转换为char *,方法是:

(char*) yourString.c_str();
Run Code Online (Sandbox Code Playgroud)

当您想通过arduino中的MQTT发布String变量时,这将非常有用。