如何组合C字符串和Arduino字符串?

我一直在为我的项目编写一个图书馆(现在我正在使用Arduino).我的问题是C和Arduino中的字符串不同.

也就是说,我希望我的图书馆独立于Arduino,所以我使用#include< string>后来声明字符串s.然而在Arduino中,字符串由Arduino定义并声明为String s2.

当我将我的库包含在草图中时,我会收到错误:string:没有这样的文件或目录,我试图包含C字符串库(#include< string>).

有没有办法使Arduino使用C字符串库,或者在编译时将字符串转换为Arduino字符串?

解决方法

几件事情

>我不知道你做什么独立于Arduino的理由.通常,编程微控制器不是一个非常可调的方式,可能与传统的计算机程序有很大不同.如果您真的要独立于任何微控制器和任何平台,您仍然可以使用C风格的字符串,char *指向一个字符数组.
做你想做的事不容易.首先你需要std :: string库的源代码.执行#include< string>还不够:您还必须编译AVR平台的字符串库.
>与古典计算机程序相比,Arduino处理C代码有一些“限制”:例如,运算符new和delete没有被实现.此外,std :: string实现可能需要其他方面的事情,因此要管理大量的依赖关系,或者对于Arduino来说,代码源大小太大.

有一些AVR微控制器的经典串行工具的实现,如Arduino,但是它们以C风格字符串的程序方式(而不是以面向对象的方式)完成.例如,对于avr-gcc,avr-gcc,你可以看到这里的功能列表:
avr-libc string.h
你甚至拥有好的旧版本:avr-libc stdio.h

如果您在代码添加了好的头文件,可以使用Arduino,但要注意代码的大小!只需使用printf就可以将大小增加几千字节,这对于微控制器来说可能是巨大的,这取决于您的需要.

总而言之,在我看来,唯一便携式的方式是使用char * string,http://arduino.cc/en/Reference/String

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...