Obtengo un valor int de uno de los pines analógicos de mi Arduino. ¿Cómo concateno esto a ay String
luego convierto el en String
a char[]
?
Se sugirió que lo intentara char msg[] = myString.getChars();
, pero estoy recibiendo un mensaje que getChars
no existe.
const char * msg = myString.c_str();
. A diferencia detoCharArray()
,c_str()
es una operación de copia cero, y la copia cero es algo bueno en dispositivos con limitaciones de memoria.Respuestas:
Para convertir y agregar un número entero, use operator + = (o función miembro
concat
):Para obtener la cadena como tipo
char[]
, use toCharArray () :En el ejemplo, solo hay espacio para 49 caracteres (suponiendo que termine con un valor nulo). Es posible que desee hacer que el tamaño sea dinámico.
Gastos generales
El costo de traer
String
(no está incluido si no se usa en ninguna parte del boceto) es de aproximadamente 1212 bytes de memoria de programa (flash) y 48 bytes de RAM.Esto se midió utilizando Arduino IDE versión 1.8.10 (2019-09-13) para un boceto Arduino Leonardo .
fuente
char charBuf[stringOne.length()+1]
char ssid[ssidString.length()];
ssidString.toCharArray(ssid, ssidString.length());
+1
primero, ¡pero tu solución funcionó para mí!Solo como referencia, aquí hay un ejemplo de cómo convertir entre
String
ychar[]
con una longitud dinámica:// Define String str = "This is my string"; // Length (with one extra character for the null terminator) int str_len = str.length() + 1; // Prepare the character array (the buffer) char char_array[str_len]; // Copy it over str.toCharArray(char_array, str_len);
Sí, esto es dolorosamente obtuso para algo tan simple como una conversión de tipo, pero lamentablemente es la forma más fácil.
fuente
Puede convertirlo a char * si no necesita una cadena modificable usando:
(char*) yourString.c_str();
Esto sería muy útil cuando desee publicar una variable de cadena a través de MQTT en arduino.
fuente
Nada de eso funcionó. Aquí hay una forma mucho más simple ... la etiqueta str es el puntero a lo que ES una matriz ...
fuente
str
no es un puntero a una matriz, es unString
objeto que implementa el[]
operador.