Несколько вещей:
- Я не уверен в том, что вы делаете что-то независимое от Arduino. Обычно программирование микроконтроллера не является чем-то очень модулируемым и может сильно отличаться от классической компьютерной программы. Если вы действительно хотите быть независимым от любого микроконтроллера и любой платформы, вы все равно можете использовать строки в стиле C с
char *
, указывающим на массив символов.
- Делать то, что вы хотели бы сделать, совсем непросто. Прежде всего вам понадобится исходный код вашей библиотеки
std::string
. Выполнение #include <string>
недостаточно: вы также должны скомпилировать библиотеку строк для платформы AVR.
- Существуют некоторые «ограничения» в том, как Arduino обрабатывает код C ++ по сравнению с классической компьютерной программой: например, операторы
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