我从Arduino上的模拟引脚之一获取了整数值。如何String
将其连接到a ,然后将其转换String
为a char[]
?
有人建议我尝试char msg[] = myString.getChars();
,但收到的消息getChars
不存在。
Answers:
要转换和附加整数,请使用运算符+ =(或成员函数concat
):
String stringOne = "A long integer: ";
stringOne += 123456789;
要获取字符串作为type char[]
,请使用toCharArray():
char charBuf[50];
stringOne.toCharArray(charBuf, 50)
在该示例中,只有49个字符的空间(假定它以null终止)。您可能要使大小动态。
导入的成本String
(如果未在草图中的任何地方使用,则不包括在内)大约为1212字节程序存储器(闪存)和48字节RAM。
这是使用Arduino IDE版本1.8.10(2019-09-13)针对Arduino Leonardo草图进行测量的。
char charBuf[stringOne.length()+1]
char ssid[ssidString.length()];
ssidString.toCharArray(ssid, ssidString.length());
+1
起初没有尝试过,但是您的解决方案对我有用!
只是作为参考,在这里是如何相互转换的例子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);
是的,这对于像类型转换这样的简单操作来说是令人痛苦的钝化,但是可悲的是,这是最简单的方法。
这些东西都不起作用。这是一种更简单的方法..标签str是指向什么是数组的指针...
String str = String(yourNumber, DEC); // Obviously .. get your int or byte into the string
str = str + '\r' + '\n'; // Add the required carriage return, optional line feed
byte str_len = str.length();
// Get the length of the whole lot .. C will kindly
// place a null at the end of the string which makes
// it by default an array[].
// The [0] element is the highest digit... so we
// have a separate place counter for the array...
byte arrayPointer = 0;
while (str_len)
{
// I was outputting the digits to the TX buffer
if ((UCSR0A & (1<<UDRE0))) // Is the TX buffer empty?
{
UDR0 = str[arrayPointer];
--str_len;
++arrayPointer;
}
}
str
不是指向数组的指针,而是String
实现[]
运算符的对象。
const char * msg = myString.c_str();
。不像toCharArray()
,c_str()
是零复制操作,而零复制在内存受限的设备上是一件好事。