我正在使用Arduino。
对于文本操作,有两种方法。第一种方法是使用 以null字符结尾的字符数组。这是用C语言完成的。另一种方法是使用用C ++编写的String对象。
两种方法有什么区别?使用String对象与char数组有什么优缺点?
我希望在像Arduino这样的嵌入式系统的环境中回答这个问题。
答案 0 :(得分:3)
与C ++的std::string
一样,Arduino String
有几个优点:
NUL
字节('\0'
)NUL
得出的)主要的缺点是存储总是动态分配(堆栈本地字符数组可以减少内存碎片并提高缓存一致性),并且您始终存储length
和{{1}引擎盖下的capacity
,所以你需要支付(取决于处理器的指针大小和类型的精确保证)12-24字节的固定开销超出了{{的普通堆栈数组1}}将涉及;如果你有很多非常小的String
和有限的内存,这可能会伤害你(虽然对于很多人来说,即使使用char
数组,你也可能是动态的分配,所以你仍然支付指针和分配器开销,而不是String
和char
开销。
基本上,you use String
for the same reasons you use std::string
in normal C++.