拆分并分配字符 我是C++和ARDUINO的新手。
我有3个char类型的变量拆分并分配字符 我是C++和ARDUINO的新手。,c++,char,arduino,C++,Char,Arduino,我有3个char类型的变量 char receivePayload[31]; char devID; char switchState; receivePayload中的数据可能类似于“01:01”或“01:00”。这里冒号前面的第一部分是设备ID,第二部分是switchState 你能帮我解释一下我怎样才能把2分开吗。我确实读过关于斯特克的书,但无法理解 所需的输出如下 devID would have 01 stored and switchState would have 01 or
char receivePayload[31];
char devID;
char switchState;
receivePayload中的数据可能类似于“01:01”或“01:00”。这里冒号前面的第一部分是设备ID,第二部分是switchState
你能帮我解释一下我怎样才能把2分开吗。我确实读过关于斯特克的书,但无法理解
所需的输出如下
devID would have 01 stored and
switchState would have 01 or 00 stored.
如果我能把它转换成整数
非常感谢。对于您的问题,有多种解决方案:一种是用作标记器。另一个是使用和。另一个解决方案是使用旧的C函数 上述解决方案都会给您字符串,因此您必须同时生成
devId
和switchState
字符串,或者使用例如将字符串转换为整数
显然,Arduino平台没有上面列出的功能,这意味着您必须自己标记字符串。但是,这非常简单:找到分隔符(
):“
字符),从开头将分隔符复制到(但不包括)临时字符串中,并将其转换为整数,例如。然后将分隔符从(但不包括)复制到临时字符串中,并将该值转换为整数
如果您甚至没有
std::strtol
,那么就使用。因为这是Arduino,您可能应该使用该类,因为它可以处理许多烦人的东西,比如转换为int
,而不必显式链接到glibc
您可以像这样拆分字符串:
String receivedPayload("01:10");
String devId = receivedPayload.substring(0, receivedPayload.indexOf(':'));
String switchState = receivedPayload.substring(receivedPayload.indexOf(':'));
将它们转换为整数只需要在字符串对象上使用
如果您不需要转换为整数,那么通过使用for循环并检查字符是否等于
:'
,您可以更轻松地标记字符串,因为字符串很短。更正:您有两个char
类型的变量,还有一个数组类型的变量char
。Arduino没有这两个。@Rapptz甚至没有strtok
?据我所知不是。它没有glibc提供的许多函数(甚至没有printf),但您可以链接它们。只需包含它们(您必须导入它们)我添加了对string.h的引用,string函数可用,如何将char分配到string中。我做了以下操作:String rcvPayld=receivePayload;我收到错误:从“char”到“const char*”的转换无效。请提供任何建议。我还尝试了字符串rcvPayld(receivePayload);得到了同样的错误。