Использовать библиотеку печати для установки строковой переменной

serial c++ print

Мне нужна функция, которая имеет базовую функциональность библиотеки печати, принимая различные типы аргументов и анализируя их. Однако я хотел бы сохранить результат в массиве string/char. Кто-нибудь знает, как я могу использовать библиотеку печати для этого?

, 👍1

Обсуждение

Ну, это для использования на arduino. А библиотека печати - это библиотека arduino. Я не уверен, что это в стандартном C++, но я бы так не думал., @mmiles19

RTFM: https://www.arduino.cc/en/Reference/StringConstructor, @Majenko

Извините. Обычно я работаю в C. Я и не подозревал, что строковый конструктор настолько надежен. Спасибо., @mmiles19

мой StreamLib, опубликованный в 2018 году, имеет CStringBuilder, @Juraj


1 ответ


1

Вы можете получить всю функциональность Print, создав свой собственный класс , который наследуется от него. Для этого вам нужно только реализовать метод size_t write(uint8_t), который печатает один символ. Вот простой класс, который наследуется как от Print, так и от String, т. Е. Вы получаете строку, в которую вы можете print() и println ():

// Строка, в которую можно ввести print() и println ().
class PrintString : public Print, public String
{
public:
    PrintString() : String() {}

    size_t write(uint8_t c) {
        *this += (char) c;
        return 1;
    }
};

И вот как вы могли бы его использовать:

PrintString answer;
answer.print("The answer is ");
answer.println(42);
,