string/array int

Salve a tutti, credo di dover convertire una stringa in un array Int ma non capisco come fare.

Praticamente ho una stringa fatta in questo modo:

String cod=server.arg("codice");

dove il codice (che sarebbe una sequenza IR) me lo prendo tramite una richiesta webserver ed è fatto così:

codice=4532, 4488, 548, 1694, 574, 1666, 546, 1694, 574, 546, 574, 546, 574, 546, 574, 544, 574, 546, 572, 1668, 574, 1668, 574, 1668, 574, 546, 574, 546, 548, 574, 574, 546, 552, 568, 546, 572, 546, 1694, 574, 548, 570, 546, 574, 546, 546, 600, 520, 576, 572, 546, 546, 1694, 546, 574, 574, 1666, 574, 1666, 574, 1670, 570, 1668, 572, 1668, 546, 1694, 546

La sintassi posso modificarla a piacimento.

Per farla breve cod è una stringa e contiente quella sequenza di numeri separati da ", "

Ora per inviare il codice IR utilizzo:

irsend.sendRaw(rawData, 67, 38);

Il problema è che non riesco a convertire la stringa in un array Int (che in questo caso si chiama rawData) come richiesto dal comando rsend.sendRaw, ho provato a fare

cod.toInt()

ma giustamente mi restituisce solo il primo valore numerico della stringa.

Come potrei fare?

Grazie

Cicli la stringa Conti le virgole, le usi come indice dello array

Ignori gli spazi

Calcoli il valore sottraendo da ogni cifra '0' e moltiplicando per 10

Alla fine della stringa hai finito di scrivere lo array

potresti farmi un esempio?

Ad esempio volendo trasformare la stringa

String test="1, 2, 3";

grazie mille

ciao

io farei (pseudo codice):

for su String.length()
per ogni indice del for salvo String[indice] in una char
se char sta nei numeri
lo aggiungo ad una String locale
altrimenti
se String local non è vuota
salvo nella mia array il toItn della String locale
azzero la String locale
incremento l’indice della mia array
alla fine azzero la char

Una bella domanda è :

Sappiamo di quanti elementi è composta la stringa?

Lo sappiamo a compiletime o a runtime?

docsavage:
Una bella domanda è :

Sappiamo di quanti elementi è composta la stringa?

Lo sappiamo a compiletime o a runtime?

Lo sappiamo dopo che è partito lo script, in quanto la devo recuperare da server.

String cod=server.arg("codice");

Hai hai hai

Temo che almeno la lunghezza massima serva saperla

Risolto, mi faccio inviare dal server anche la lunghezza della stringa(nmb) e via:

    String cod = server.arg("codice");
    String nmb = server.arg("nmb");

    int nmbi = nmb.toInt();

    char *str = (char*)cod.c_str();
    const size_t bufferSize = nmbi;
    uint16_t arr[bufferSize];
    char *p = strtok(str, ",");
    size_t index = 0;
    while (p != nullptr && index < bufferSize) {
      arr[index++] = atoi(p);
      p = strtok(NULL, ",");
    }

    irsend.sendRaw(arr, nmbi, 38);

Bravo Ho imparato qualcosa