Ответ 1
Несколько вещей:
- Я не уверен в твоем разумении делать что-то независимое от Ардуино. Обычно программирование микроконтроллера не является чем-то очень модульным и может сильно отличаться от классической компьютерной программы. Если вы действительно хотите быть независимыми от любого микроконтроллера и любой платформы, вы все равно можете использовать строки в стиле C, а
char *
указывать на массив символов. - Выполнение того, что вы хотели бы сделать, совсем не просто. Прежде всего, вам понадобится исходный код вашей библиотеки
std::string
. Выполнение#include <string>
недостаточно: вы также должны скомпилировать библиотеку строк для платформы AVR. - Существуют некоторые "ограничения" в том, как Arduino обрабатывает код С++ по сравнению с классической компьютерной программой: например, операторы
new
иdelete
не реализованы. Более того, для реализацииstd::string
может потребоваться другое, поэтому для Arduino требуется слишком много зависимостей, или размер исходного кода слишком большой.
Существует несколько реализаций классических струнных инструментов для микроконтроллера AVR, такого как Arduino, но они выполняются процедурно (а не объектно-ориентированным способом) для строк C-стиля. Например, для avr-libc, следующего с avr-gcc, вы можете увидеть список функций здесь:
avr-libc string.h
У вас даже есть старый добрый printf
: avr-libc stdio.h
Можно использовать их с Arduino, если вы добавляете хорошие заголовочные файлы в свой код, но остерегайтесь размера своего кода! Просто использование printf
может увеличить размер на несколько килобайт, что может быть огромным для микроконтроллера в зависимости от ваших потребностей.
В заключение, на мой взгляд, единственным переносным способом было бы использовать строку char *
, http://arduino.cc/en/Reference/String