Обновить `символ*`
У меня есть класс, содержащий несколько переменных char*
:
char* msgTopic = "myHome/MSGS";
char* groupTopic = "myHome/All";
char* errorTopic = "myHome/Err";
но я хочу, чтобы он был определен вне класса, а не жестко запрограммирован (обновляйте только prefixTopic
вне класса,
char* prefixTopic = "myHome";
char* msgTopic = ""; // also tried--> char* msgTopic = "AAAAAAAAAAA";
char* groupTopic = "";
char* errorTopic = "";
а затем вниз по коду, чтобы определить его как:
sprintf(msgTopic ,"%s/Messages",prefixTopic);
sprintf(groupTopic,"%s/All",prefixTopic);
sprintf(errorTopic,"%s/Errors",prefixTopic);
НО
в обоих случаях (при определении переменных как ""
или просто заполнении их символами для выделения места) темы определялись с ошибками (чаще всего одна переменная содержала обе темы).
Будем признательны за любую помощь (я не думаю, что контекст класса имеет значение)
@Guy . D, 👍0
Обсуждение1 ответ
Лучший ответ:
Во-первых, вы должны подумать об использовании динамических или предварительно выделенных строк. Динамическая память не рекомендуется для Arduino, поэтому я буду использовать предварительно выделенные строки.
В таком случае нужно подумать о максимальной длине, я пока возьму 32:
#include <stdio.h>
class YourClass
{
static const int MaxTopicLength = 32;
char _msgTopic[MaxTopicLength];
char _groupTopic[MaxTopicLength];
char _errorTopic[MaxTopicLength];
void FillStrings(const char* prefixTopic);
};
Затем создайте в своем классе функцию для заполнения строк (не проверено):
void YourClass::FillStrings(const char* prefixTopic)
{
snprintf(_msgTopic , MaxTopicLength, "%s/Messages", prefixTopic);
snprintf(_groupTopic, MaxTopicLength, "%s/All" , prefixTopic);
snprintf(_errorTopic, MaxTopicLength, "%s/Errors" , prefixTopic);
}
- Вычислить SHA256 строки и вывести в строку
- Преобразование строки c integer в unsigned char
- Я не могу правильно получить строку, которую я отправил через nrf
- Как разделить входящую строку?
- Как вывести несколько переменных в строке?
- форматирование строк в Arduino для вывода
- Очень простая операция Arduino Uno Serial.readString()
- DateTime в строку
Не дубликат, а ответы на «устаревшее преобразование строковой константы в 'char*'» должны предоставить ответ, который вы ищете (и многое другое)., @Edgar Bonet