也就是说,我希望我的图书馆独立于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