微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何组合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

原文地址:https://www.jb51.cc/c/114246.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐